1。概要
タイムゾーンは、他の地域と同様の標準時を持つ地理的地域です。ほとんどの Linux ディストリビューションでは、インストール時にシステム時刻がデフォルトで設定されます。 正しいタイムゾーンを持つことは、多くのシステム関連のタスクとプロセスにとって不可欠です。例には、システム ログのタイムゾーンとタイムスタンプを使用する cron ジョブや、別の地域に移動した場合のタイムゾーンの変更が含まれます。 このチュートリアルでは、Linux ベースのシステムでタイムゾーンを変更するさまざまな方法について説明します。
2. timedatectl の使用
現在のシステム タイムゾーンの変更に進む前に、使用するタイムゾーンの名前を見つける必要があります。タイムゾーン名は、地域/都市の形式に従います。 timedatectlコマンドを使用して、利用可能なすべてのタイムゾーンを表示してみましょう。
$ timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara .......truncated.......
または、 /usr/share/zoneinfo ディレクトリ内のすべてのファイルを一覧表示することもできます。
$ ls /usr/share/zoneinfo Africa Cuba GMT+0 Japan NZ-CHAT SystemV America EET GMT-0 Kwajalein Pacific Turkey Antarctica Egypt GMT0 leapseconds Poland tzdata.zi .........truncated........
正しいタイムゾーン名を特定したら、root ユーザーとしてtimedatectlコマンドを実行して、現在のタイムゾーンを変更しましょう。
$ sudo timedatectl set-timezone Europe/Brussels
set-timezoneオプションを使用して、システムの現在のタイムゾーンを Europe/Brussels に変更しています。 timedatectlコマンドを使用して、タイムゾーンの変更を確認しましょう。
$ timedatectl Local time: Kam 2022-07-28 16:17:18 CEST Universal time: Kam 2022-07-28 14:17:18 UTC RTC time: Kam 2022-07-28 14:17:18 Time zone: Europe/Brussels (CEST, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no
3.シンボリックリンクの使用
/etc/localtime ディレクトリを/usr/share/zoneinfoディレクトリにリストされているタイムゾーンにシンボリックリンクすることで、タイムゾーンを変更することもできます。この方法は、 timedatectlコマンドを使用できない従来の Linux ディストリビューションに役立ちます。 現在のシンボリックリンクを削除することから始めましょう。
$ sudo rm -rf /etc/localtime
次に、使用するタイムゾーンを特定し、選択したタイムゾーンへのシンボリックリンクを作成できます。
$ sudo ln -s /usr/share/zoneinfo/Europe/Brussels /etc/localtime
ln コマンドを使用して、ヨーロッパ/ブリュッセルのタイムゾーンへのシンボリック リンクを作成しています。 変更を確認するには、dateコマンドを使用できます。
$ date Kamiisa, Adooleessa 28, 5:14:54 WB CEST 2022
または、 /etc/localtimeディレクトリを一覧表示することもできます。
$ ls -l /etc/localtime lrwxrwxrwx 1 root root 35 Ado 28 16:14 /etc/localtime -> /usr/share/zoneinfo/Europe/Brussels
4. タイムゾーン選択メニューの使用
tzselect Linux ユーティリティは、現在の場所または特定の場所に関する情報をユーザーに尋ね、結果のタイムゾーンの説明を stdout に出力します。出力を$TZ環境変数の値として使用できます。 tzselectコマンドを使用して、タイムゾーンの名前と説明を出力してみましょう。
$ tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas 3) Antarctica 4) Asia 5) Atlantic Ocean 6) Australia 7) Europe 8) Indian Ocean 9) Pacific Ocean 10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the timezone using the Posix TZ format.
大陸を選択してから国を選択するか、場所の座標を指定するプロンプトが表示されます。 選択すると、次の出力が期待できます。
...truncated... You can make this change permanent for yourself by appending the line TZ='Europe/London'; export TZ to the file '.profile' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: Europe/London
次に、生成されたタイムゾーン名をTZ環境変数で設定する必要があります。
$ export TZ="Europe/London"
これにより、現在のシステムのタイムゾーンがヨーロッパ/ロンドンに変更されます。ただし、これは一時的な変更にすぎず、上記のコマンドをコピーして.bashrc または .zshrcファイルに貼り付ける必要があります。
5. GUI 経由
Linux ベースのシステムの GUI を使用して、現在のシステムのタイムゾーンを変更することもできます。 アプリケーション メニューで「設定」を検索してみましょう。
または、デスクトップを右クリックして、選択メニューで設定を選択することもできます。 「設定」をクリックすると、設定ウィンドウが表示され、ナビゲーションメニューの「日付と時刻」オプションをクリックできます。
タイムゾーンは、インターネットに接続しているときはいつでも自動的に変更されます。ただし、「タイムゾーン」 オプションをクリックして変更できます。
世界地図のポップアップが表示されます。検索バーで現在地を検索するか、地図をクリックして特定のタイムゾーンを設定できます。 特定のタイムゾーンを選択したら、timedatectl コマンドを使用して変更を確認できます。
$ timedatectl Local time: San 2022-07-30 18:37:48 EDT Universal time: San 2022-07-30 22:37:48 UTC RTC time: San 2022-07-30 22:37:48 Time zone: America/New_York (EDT, -0400) System clock synchronized: yes NTP service: active RTC in local TZ: no
6. 結論
この記事では、Linux ベースのシステムでタイムゾーンを変更するために使用できるさまざまな方法について説明しました。 timedatectl コマンドの使用は、現在のタイムゾーンを変更するための最も推奨される方法です。ただし、現在のシステムでtimedatectlコマンドを使用できない場合は、シンボリック リンクを作成するか、GUI から変更できます。 Linux エコシステムで数年の経験があり、その経験をコミュニティと共有することに興味がある場合は、貢献ガイドラインをご覧ください。
$ echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
ログ ファイル、バックアップ、またはテキスト ファイルの作成中に日付と時刻を追加することは、最も頻繁に遭遇する一般的な操作です。例を挙げてみましょう。バックアップを取るために、シェル スクリプトを作成しました。 OR
echo «Yesterday = $(date -d «Yesterday»)» TecMint は、Web 上のあらゆる種類の Linux 記事、ガイド、および書籍の最も急速に成長し、最も信頼されているコミュニティ サイトです。何百万人もの人々が TecMint を訪れています! すべての人が無料で利用できる何千もの公開記事を検索または閲覧できます。 $ TODAY1=$(日付 +%F)
# 昨日の日付と時刻を出力します。
CUSTOM_FORMAT=$(date --date "昨日" "+%d-%y-%H:%M")
共通操作
$ date --set="Thu Nov 12 13:06:59 IST 2020"
指定された 2 つの日付の間の日数を計算します。 echo «昨年 = $(date -d «昨年» «+%Y»)»
echo «24 時間形式の現在時刻 = $(date +%T)»
TecMint で私たちが行っていることを評価する場合は、次のことを検討してください。
指定された年がうるう年かどうかを調べます。 それがどのように機能するかを理解するために、いくつかの例を見てみましょう。 echo «現在の曜日 = $(date +%a)»
{2000..2020} の y の $; do date -d $y-02-29 &>/dev/null && echo $y はうるう年です。終わり
Linux で日付を確認する
$どの日付 # %B と %b の違いは、%B は月の完全な名前を出力するのに対し、%b は省略された月の名前を出力することです。 echo "12 時間形式の現在時刻 = $(date +%r)" # 今から 10 日前の日付と時刻を見つけます。
- GNU\LINUX のフォーマット オプションのリストを取得するには、リンクされた man ページを参照してください。
echo Hours = $(date +%H)
コード ブロック
- 書式設定を適用するには、「+に続いて「formatter」を使用します。
echo «今日から 2 日後、平日に来ますか? = $(date -d «今日 +2 日» «+%A»)
+%
と –date オプションを使用することです。 echo «Date using %D = $(date +%D)» # %Y と %y の違いは、%Y は 4 桁、%y は年の下 2 桁を出力することです。


Linux での処理時間
スクリプトを使用して Linux で時間を見つける 使用する最も一般的な書式設定オプションをいくつか見てみましょう。
$日付 echo ナノ秒 = $(日付 +%N)
$ TODAY=$(日付 +%Y-%m-%d)
# 年、月、日、日付を印刷...
- BSD のフォーマット オプションのリストを取得するには、リンクされた man ページを参照してください。
Linux での日付の処理
echo «今月は $(date +%m)»
$ type -a date
$男の日付
フォーマットを使用して日付を確認する
# 印刷時間、分、秒、ナノ秒 $ エコー $TODAY1
Linux システムの日付と時刻を変更する
スクリプトを使用して日付と時刻を検索する # 先月と翌月を検索
# 平日を予測
echo Minutes = $(date +%M)
echo Epoch Time = $(date +%s)
…
echo «先月 = $(date -d «last month» «%B »)»
echo «現在の曜日 = $(date +%A)» 日付を変数に代入 書式設定オプションのリストを取得するのに適した場所は、man ページです。 # 日付を取得するために書式設定する代わりに、日付を %m/%d/%y として出力する %D または %Y-%M-%d 形式で出力する %F を使用できます。
echo «スクリプト開始» >> ${LOG_FILE} このスクリプトは、00:00 から 23:59 までバックアップを取得し、翌日の 00:00 に毎日実行されるようにスケジュールされています。昨日の日付形式でログ ファイルを作成します。 Date コマンドは、システムの日付と時刻を設定または表示できる外部 bash プログラムです。また、いくつかの書式設定オプションも提供します。Date コマンドは、デフォルトですべての Linux ディストリビューションにインストールされています。 --date
または-d
フラグ入力を文字列として渡すことができ、日付コマンドはそれをスマートに処理することを知っています。 echo «Date using %F = $(date +%F)» date コマンドを使用すると、システムの日付、時刻、およびタイムゾーンを変更でき、その変更をハードウェア クロックと同期する必要があります。 # HH:MM:SS 形式で時刻を表示する %T も使用できます。
$ エコー $TODAY ファイル名に日付が追加されたログ ファイルを作成します。 読んでいる内容が気に入ったら、感謝の印としてコーヒーを 1 杯 (または 2 杯) 購入することを検討してください。 echo «スクリプトが完了しました» >> ${LOG_FILE}
echo «10日前 = $(date -d «tomorrow -10 days»)» 現在の日付と時刻を表示するターミナルでdateコマンドを入力します。 echo Seconds = $(date +%S)
# 明日の日付と時刻を出力します。
# %r を使用して時間を 12 時間形式で表示することもできます。 この記事は以上です。この記事では、Linux で bash の日付と時刻を使用する方法を見てきました。フィードバックをお寄せください。 # 昨年と来年を検索
echo «現在の年 = $(date +%Y)»
echo «現在の月 = $(date +%B)» Linuxでうるう年を見つける echo «来月 = $(date -d «来月» «%B»)»
echo «現在時刻 = $(date +%H:%M:%S:%N)»
echo «来年 = $(date -d «来年» «+%Y»)»
–date または -d フラグを使用
いつも変わらぬご愛顧を賜り、誠にありがとうございます。 echo «現在の月 = $(date +%b)»
echo «現在の年 = $(date +%y)» 次に、 date コマンドに書式を適用してみましょう。書式設定を適用するには、例に示すように、プラス記号の(+)
後に を追加します。%formatter
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
書式設定オプション
$ hwclock —systohc date コマンドの出力を変数に割り当てます。 Linux システムの日付と時刻を設定する echo «Current Day of the month = $(date +%d)»
# %A と %a の違いは、%A は完全な曜日名を出力するのに対し、%a は短縮された曜日名を出力することです。 ‘ date.sh ‘と呼ばれる単純なシェル スクリプトで日付関連のフォーマッタを使用する方法を見てみましょう。 # companyhome
tty -s を含める || インタラクティブ=0
fi 実行bash -x
すると大量の出力が出力され、最後に /etc/profile.d/company.sh: *:root) PS1=»\[\033]0;\[email protected]\h: \w\007\]\[email protected]\h:\w# «; TMOUT=3600 ;;
export ignoreeof=0
export PS1
# $HOME が明示的なマウントの場合 -> nfs そうでない場合はそのローカル
export PROMPT_COMMAND=’PS1=`echo «\[email protected]\h:\w$PS2″`’
On_Red=’\e[41m’ # 赤
/etc/profile.d/company.sh: *) PS1=»\[\033]0;\[email protected]\h: \w\007\]\[email protected]\h:\w> » ;;
PKG_ROOT=/opt/companyhome/ fi Cyan='\e[0;36m' # Cyan # git branch 2> /dev/null | sed -e '/^\[^*\]/d' -e 's/* \(.*\)/|\1/' if [ -d "$PKG_ROOT" ]; then . "${COMPANYHOME_ROOT}/bashrc_company" On_White='\e[47m' # White LightGray='\e[0;37m' # Light Gray + PS1='\[\e[0;32m\]\[email protected]\h \[\e[1;30m\]\w\[\e[0;33m\]$(parse_git_branch)\[\e[m\] $ ' BGreen='\e[1;32m' # Green dp /etc/profile.d/company.sh: linux:root) PS1="\[email protected]\h:\w# "; TMOUT=3600 ;; + NC='\e[m' On_Blue='\e[44m' # Blue BPurple='\e[1;35m' # Purple echo "$1" print_msg "Error no companyhome installation found."
/home/myself/.bashrc:# this does not apply, but PS1 env var is empty. print_msg "Companyhome could not be loaded." CURRENT_ROOT=$NFS_ROOT . /etc/bash_completion /home/myself/.bashrc:PS1="\[$Green\]\[email protected]\h \[$BBlack\]\w\[$Yellow\]\$(parse_git_branch)\[$NC\] $ " fi INTERACTIVE=1 else Blue='\e[0;34m' # Blue
アップデート
CURRENT_ROOT=$PKG_ROOT
parse_git_branch() {
# companyhome のパッケージ バージョンまたは nfs (レガシー) バージョンに対して実行するかどうかを確認します
/etc/profile.d/colorls.sh: [ -z «$PS1″ ] && return
# write to stdout (非インタラクティブ (scp など) ログインでは無効)
# show git branch
NC=»\e[m» # Color Reset
CURRENT_ROOT=»»
私の.bashrc
では、下部に次の部分を追加しました。
if [ «$TERM» = «dtterm» ] || [ «$TERM» = «xterm» ] || [ «$TERM» = «xterm-color» ] || [ «$TERM» = «linux» ]; 次に
export PROMPT_COMMAND=’PS1=`echo «\[email protected]\h$PS2″`’
setps2
—
/etc/profile.d/company.sh: linux:*) PS1=»\[email protected]\h:\w> » ;;
print_msg_debug «companyhome は \»$CURRENT_ROOT\» にインストールされています»
# /home が nfs/network ベースの場合、is_nfs_home は 0 (成功) を返し、そうでない場合は 1 (ローカル ホーム) を返します
sp
+ On_White='\e[47m' Green='\e[0;32m' # Green
アップデートⅢ
BBlack=’\e[1;30m’ # 黒
${COMPANYHOME_ROOT}/bashrc_company
:
git rev-parse —abbrev-ref HEAD 2> /dev/null | sed ‘s/^/|/g’
# これがインタラクティブ セッションかどうかを確認します。
# 関数はアクセシビリティを保証しません
ちなみに.bashrc
必ず処刑されます。次のような行を追加してecho "hello"
、ターミナルを開いたときに結果を確認することで、これを確認しました。
dp () {
# Colors print_msg "[email protected]" On_Black='\e[40m' # Black
アップデートⅡ
# これは当てはまりませんが、PS1 環境変数は空です。
BCyan=’\e[1;36m’ # シアン
イエロー=’\e[0;33m’ # イエロー
# ボールド
私のフル.bashrc
:
else
Black=’\e[0;30m’ # Black
print_msg() {
BYellow=’\e[1;33m’ # Yellow
[ -n «$PS1» ] || INTERACTIVE=0
BRed=’\e[1;31m’ # Red
# バックグラウンド
エクスポート «COMPANYHOME_ROOT=$CURRENT_ROOT»
++ PS1=’\[\033]0;\[email protected]\h: \w\007\]\u @\h:\w> ‘
if [[ ! -z «$COMPANYHOME_INIT_DEBUG» ]]; 次に
export PROMPT_COMMAND=’PS1=»\[\033]0;\[email protected]\h: \w\007\]\[email protected]\h:\w$PS2″’
LINKS_VERSION=3.0.0.0
BWhite=’\e[ 1;37m’ # ホワイト
On_Yellow=’\e[43m’ # イエロー
エクスポート PS2=’> ‘
PS1=»\[$Green\]\[email protected]\h \[$BBlack\]\w\[$Yellow\] \$(parse_git_branch)\[$NC\] $ »
Red Hat Enterprise Linux 6 マシンで、色や git リポジトリ情報を含むカスタム PS1 ラインを使用しようとしています。UbuntuまたはMintを実行している他のシステムで正常に使用している事前定義されたバージョンがあります。
NFS_ROOT=/share/install/companyhome/current/
. «${COMPANYHOME_ROOT}/update/check_linksversion»
# define_companyhome_root
elif [ -d «$NFS_ROOT» ]; その後、
print_msg_debug «loading companyhome»
ただし、端末を開くと、デフォルトの PS1 回線がまだ表示されます。Aecho $PS1
が印刷され\[\033]0;\[email protected]\h: \w\007\]\[email protected]\h:\w>
ます。どうやら、この変数はどこかでオーバーライドされます。しかし、どこで、またはどうすればこれを見つけることができますか?
print_msg_debug(){
の出力grep -H PS1 ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2> /dev/null
:
is_nfs_home(){
return 1
fi;
# 端末でない場合、tty は 1 を返します。しかし、可能なリモート実行では、
/home/myself/.bashrc:[ -n «$PS1» ] || INTERACTIVE=0
On_Cyan=’\e[46m’ # シアン
INTERACTIVE=1 On_Green='\e[42m' # Green elif [ "$TERM" = "sun-cmd" ] || [ ! -z $EMACS ] ; then On_Purple='\e[45m' # Purple sp () { Red='\e[0;31m' # Red Purple='\e[0;35m' # Purple if [ "$INTERACTIVE" = "1" ]; then if [ -f /etc/bash_completion ]; then BBlue='\e[1;34m' # Blue # Normal Colors /etc/profile.d/company.sh:export PS1
この.bashrc
ファイルには、ユーザーごとのシステム構成の実装が含まれています。つまり、Bash ターミナル セッションを開始するたびに何か (たとえば、コマンド エイリアスやタイムゾーンなど) を事前に構成したい場合、.bashrc
ファイルはそのための場所です!
現在の Bash セッションを終了し、再度開くだけです。コマンドを実行すると、タイムゾーンがファイル内の変数にdate
エクスポートされた値に変更されていることがわかります。オプションなしで入力して、より完全な概要を表示することもできます。たとえば、 の設定を使用すると、次のことがわかります。TZ
~/.bashrc
timedatectl
TZ
Australia/Sydney
Bash でユーザーのタイムゾーンを変更する
まだ経験がない場合vim
、または急いでいる場合は、nano
代わりにエディターを使用できます。を実行nano ~/.bashrc
するだけで、.bashrc
. nano
システムで見つからなかったエラーが発生した場合は、 を使用して同じものをインストールしてくださいsudo apt install nano
。
export TZ=オーストラリア/シドニー
Bash でユーザーのタイムゾーンを変更するのは簡単です。TZ
変数を(エクスポートして)目的のタイムゾーンに設定するだけです。例えば:
export TZ=オーストラリア/パース export TZ=オーストラリア/ダーウィン
この情報があれば.bashrc
、目的の設定に合わせてファイルを簡単に更新できます。 日にち
.bashrc からのユーザー タイムゾーンの構成
ファイルからタイムゾーンを設定するには~/.bashrc
、まずテキスト エディターを使用してファイルを開き (上記のように)、ファイルの最後に次の行を追加して、タイムゾーンを好みの設定に変更します。 このファイルは、vim
や などのテキスト エディタを使用して編集できますnano
。の使用方法について詳しく知りたい場合はvim
、.vimrc を使用して優れた Vim プロファイルを定義する の記事を参照してください。基本的なvim
使用方法も説明されています。
まとめ
2 つの場所の時間の違いと、異なるタイムゾーンの略語に注意してください。 タイムゾーンのリストを取得するには、 timedatectl list-timezones | grep your_country
whereyour_country
を実際の国に置き換えて実行するか、シェル時間の設定/構成に使用する国に置き換えます。
- › Instagramでフォロワーを削除する方法
- › AMD の新しい RX 7000 GPU は本当に良くて本当に安い
- › Amazon の Fire TV 4K はわずか 25 ドルで史上最安値
- › 新しいコンピュータで古い PSU を再利用できますか?
- › クアルコムによると、ARM Windows PC は 2024 年に購入する価値がある
- › ソニー WH-1000XM5 ヘッドフォンが史上最低価格に戻る
この記事では、.bashrc
ファイルを使用して Ubuntu または Linux Mint でタイムゾーンを設定する方法を確認しました。また、このファイルの編集方法とファイルの機能についても調べました。コマンド ラインからタイムゾーンを設定できることは、サーバーの場合のように、ヘッドレス (スクリーンレス) システムで作業している場合に特に便利です。いつでも正しい時間をお楽しみください。
.bashrc とは?
多くのデスクトップ対応の Ubuntu コンピューターには便利な GUI 構成がありますが、これはサーバーのようなヘッドレス (スクリーンレス) インスタンスを構成する場合には役に立ちません。.bashrc を使用して、端末からタイムゾーンを設定する方法を確認してください。 この.bashrc
ファイルは、ホーム ディレクトリのルートにある非表示の Bash シェル固有のファイルです。つまり、その場所は~/.bashrc
. (~
チルダ) はホーム ディレクトリへのショートカットで、たとえば/home/roel
. を使用する場合~
、Bash は自動的にチルダをホーム ディレクトリ (つまり、ユーザー名を含む) に置き換えます。