もっと詳しく

コンピューターでの時間管理は多くの理由で不可欠であり、それぞれのスペルは1日かかる場合があります。 しかし冗談はさておき、Linuxタイムゾーンの効果的な管理を探しているなら、あなたは正しい場所に来ました。

このチュートリアルでは、Linuxで日付、時刻、およびタイムスタンプを操作する方法を調べて学習します。 現在の日付と時刻の印刷、将来と過去の日付の計算、タイムゾーンの操作などを行っているものもあります。

読んで、プロのように計時を殺してください!

前提条件

このチュートリアルは、実践的なデモンストレーションで構成されています。 フォローするには、次のものが必要です。

  • Linuxマシン–このチュートリアルではUbuntu 20.04を使用していますが、最新のLinuxディストリビューションでも機能します。
  • テキストエディタ–優先するテキストエディタがない場合は、ほとんどのLinuxディストリビューションにデフォルトでインストールされているnanoを使用できます。

で現在の日付と時刻を印刷する date 指示

プロジェクトのニーズに応じて、時間管理の理由のリストは続きます。 しかし、最も一般的な理由は以下のとおりです。

  • システムログは、タイムスタンプを使用して、イベントが発生したときにカタログを作成します。
  • 多くの場合、ソフトウェアのリリースは特定の日付に関連付けられています。
  • ネットワークセキュリティツールは、時間ベースの分析を使用して異常を検出します。
  • ユーザーは、予定や会議をスケジュールするために正確な時間に依存しています。

これらの理由のいずれかのために、最初に実行したいことは、現在の日付と時刻を印刷することです。 Linuxでは、dateコマンドとawkコマンドを使用してこのタスクを実行できます。 ただし、最初に、最初にdateコマンドを実行します。

を実行します date 現在の日付と時刻を出力するパラメータなしで以下のコマンド。

以下に示すように、コマンドの出力には、デフォルトで次のものが含まれています。

  • 曜日(金曜日)。
  • 月の数値日(10)。
  • 長い形式の月の名前(金曜日)、および年。
  • 日付の後には、24時間形式の現在のフルタイムとタイムゾーンが続きます。

次に、次のコマンドを実行して、一緒に使用できるすべての使用可能なオプションを表示します。 date 指図。

dateコマンドで使用可能なすべてのオプションを表示する
dateコマンドで使用可能なすべてのオプションを表示する

現在の日付をさまざまな形式で印刷する

dateコマンドだけで、現在の日付と時刻が完全な形式で出力されることを確認しました。 ただし、通常は、必要に応じて形式を変更する必要があります。

幸いなことに、dateコマンドを使用すると、システムの日付と時刻をさまざまな形式で印刷できます。この機能を使用すると、現在の日付と時刻をより適切に視覚化できます。

1.以下のコマンドを実行して、現在の日付を数値形式(%D)でのみ出力します。

現在の日付を数値形式でのみ印刷する
現在の日付を数値形式でのみ印刷する

おそらく、日付と一緒にタイムゾーンを表示することをお勧めします。 その場合は、次のコマンドのように、%Zオプションを追加します。date“ + DATE:%D%Z”

現在の日付をタイムゾーンで印刷する
現在の日付をタイムゾーンで印刷する

2.次に、次のコマンドを実行して、現在の日付をMMMYYYYの形式で出力します。 %bオプションは省略された月(11月、12月、1月…)を出力し、%Yオプションは現在の年を出力します。

省略された月と年を印刷する
省略された月と年を印刷する

3.次に、以下のコマンドを実行して、日付を長い月(11月、12月…)(%B)、DD(%d)、YYYY(%Y)として出力します。

複数のオプションをチェーンして、出力を希望どおりにフォーマットすることもできます。

現在の日付を長い形式で印刷する
現在の日付を長い形式で印刷する

4.最後に、手順3で同じコマンドを実行します。 ただし、今回は、%I:%M%pオプションを追加して、現在の時刻を出力します。

date "+DATE: %B %d,%Y %I:%M %p"
現在の日付と時刻を印刷する
現在の日付と時刻を印刷する

将来および過去の日付の計算と印刷

実際には、将来の日付を計算することをお勧めします。 なんで? おそらく、特定の日にタスクを自動的に実行するスクリプトを作成しているのでしょう。 もしそうなら、を使用して将来の日付を計算します --date オプションが重宝します。

1.以下のコマンドを実行して、現在の日付から40日後の日付を計算します。 必要に応じて、日を週、月、年などに変更できます。

以下に、現在の日付から40日後の計算された完全な日付と時刻を示します。

デフォルトの完全な形式で将来の日付を計算する
デフォルトの完全な形式で将来の日付を計算する

2.次に、手順1で実行したのと同じコマンドを実行します。 ただし、今回はオプション(“ +%B%d、%Y%I:%M%p”)を追加して出力フォーマットを変更します。

date --date="40 days" "+%B %d,%Y %I:%M %p"
カスタム形式で将来の日付を計算する
カスタム形式で将来の日付を計算する

3.ここで、過去の日付を計算するために負の数を指定して、以下のコマンドを実行します。 以下のコマンドは、現在の日付から1年前の日付を計算します。

以下の出力は、過去1年の日付を完全なデフォルト形式で示しています。 ただし、形式を変更したい場合は、手順2で行ったのと同じ形式を適用できます。

現在の日付から1年前の日付を表示する
現在の日付から1年前の日付を表示する

4.次に、単位(週と日)と–dateオプションの組み合わせを使用して、以下のコマンドを実行します。 次のコマンドは、現在の日付から2週間前と4日前の日付を計算します。

date --date="-2 weeks -4 days’
2週間前と4日前の日付を計算する
2週間前と4日前の日付を計算する

5.最後に、以下のコマンドを実行して、次の火曜日の日付を計算します。

の数値形式以外に、他の日付形式を使用することもできます。 --date オプション。 たとえば、次のような完全な月の名前を使用できます。 Tuesday、または次のような相対時間形式 tomorrownextlast。など

date --date="next Tuesday"
現在の日付から次の火曜日の日付を計算する
現在の日付から次の火曜日の日付を計算する

Bashスクリプトを使用した増分日付の印刷

現在、過去、および将来の日付の印刷は、dateコマンドで正常に機能します。 しかし、タイムゾーン、日付、時刻を処理するBashスクリプトを作成することもできることをご存知ですか? たとえば、日付を日、週、または月ごとにインクリメントします。

日付をインクリメントすると、毎日、毎週、または毎月実行する必要があるcronジョブを操作するときに役立ちます。

1.という名前のBashスクリプトを作成します date2022.sh お好みのエディタで。

2.次のコードをファイルに追加します date2022.sh、sファイルを保存し、エディターを閉じます。

以下のコードは、今日の日付から次の月曜日の日付までの各曜日の日付を出力します。

DATE=2022-05-30

for i in {0..6}
do
   NEXT_DATE=$(date +%m-%d-%Y -d "$DATE + $i day")
   echo "$NEXT_DATE"
done

3.最後に、以下のbashコマンドを実行して、date2022.shスクリプトを実行します。

次の7日間の日付の表示
次の7日間の日付の表示

GNUAwkCLIツールを使用した現在の日付と時刻の印刷

これまで、日付と時刻をさまざまな形式で印刷する方法を見てきました。 date コマンド、これで十分です。 ただし、実際のシステムでもファイルでも、日付と時刻を操作する方法が多い方が常に優れています。

他の方法は何ですか? GNUAwkCLIツール。 Awkは、幅広いタスクに使用できる強力なテキスト処理ツールです。 これらのタスクは、ログファイルからデータを抽出し、テキストデータを操作および分析することができますが、これらに限定されません。

ただし、GNU Awk CLIツールを使用する前に、まずそれをマシンにインストールする必要があります。

1.を実行します aptアップデート 以下のコマンドを使用して、システムパッケージインデックスを更新します。

システムパッケージインデックスの更新
システムパッケージインデックスの更新

2.次に、以下を実行します aptインストール GNUAwkCLIツールをインストールするコマンド。

GNUAwkCLIツールのインストール
GNUAwkCLIツールのインストール

3.インストールしたら、 gawk コマンドに print 曜日(%A)、 月 (%B)、現在の数値(%d)、および年(%Y)ここで、次の機能があります。

  • The strftime 関数は日付と時刻をフォーマットします。
  • systime関数は、エポックからの現在のシステム時刻を秒単位で返します。
gawk 'BEGIN { print strftime("Today is %A, %B %d, %Y.", systime()) }'

awkを使用すると、人間が読める形式で出力をフォーマットできることに注目してください。

GNUawkCLIツールを使用して現在の日付と時刻を印刷する
GNUawkCLIツールを使用して現在の日付と時刻を印刷する

4.最後に、以下のコマンドを実行して、1か月前の日付を計算して印刷します。 以下のコマンドは、負の数(-1)を指定したdateコマンドを使用して、前月の最初の日を取得します。

awk -v previous_month="$(date -d "`date +%Y%m01` -1 month" +%Y-%m-%d)" '{print previous_month}'
1か月前の日付を印刷する
1か月前の日付を印刷する

ファイル内の日付形式の変換

おそらく、現在のロケールと互換性のない形式の日付を含むファイルがあります。 または、ファイル内の日付が人間が読み取れるほど明確ではありません。 その場合は、GNUAwkCLIツールの使用を検討してください。

お好みのテキストエディタでファイルを作成し、日付の形式が不明なファイルに次の行を入力します。 ファイルに好きな名前を付けますが、CSVファイルは呼び出されます test.csv この例では。

1,ABC,SSS,20-OCT-16,4,1,0,5,0,0,0,0
2,DEF,AAA,20-JUL-16,4,1,0,5,0,0,0,0

次に、以下のawkコマンドを実行して、日付形式を抽出し、より人間が読める形式のYY-MM-DDに変換します。 -Fオプションは、フィールド区切り文字をコンマまたはダッシュとして設定し、コマンドは日付を目的の形式で出力(printf)します。

awk -F'[,-]' '{ printf "%s|20%02d-%02d-%02d,%sn", $3, $6, (match("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",$5)+2)/3, $4, $10 }' test.csv

以下に示すように、日付形式がはるかに明確になりました。

読み取り可能な日付の抽出と印刷
読み取り可能な日付の抽出と印刷

awkは、日付の比較、ファイルへの日付フィールドの追加、日付の並べ替えなど、さまざまなタスクを実行できる強力なツールであることがわかりました。しかし、それはこの記事の範囲を超えています。

を使用してタイムゾーンを確認する grep 指示

現在のタイムゾーンをチェックすることは複雑な税金であってはならず、grepコマンドはこのステートメントが真のままであることを保証します。 grepコマンドは、さまざまなタスクに使用できるもう1つの強力なテキスト処理ツールです。

grepコマンドがサポートするいくつかのタスクは、ログファイルからデータを抽出し、テキストデータを操作および分析することです。 これらの機能を使用すると、grepコマンドを使用して現在のタイムゾーンを確認することもできます。

以下を実行します timedatectl コマンドだけで、現在の日付、時刻、タイムゾーン、およびNTPサービスステータスをマシンに出力します。

以下に示すように、出力には、現在の日付、時刻、およびタイムゾーンに関するいくつかの情報が表示されます。 この情報により、マシンに正しいタイムゾーンが設定されていることを確認できます。また、ネットワークでの時刻同期に問題がないことを確認するのにも役立ちます。

日付、時刻、タイムゾーンを確認する
日付、時刻、タイムゾーンを確認する

grepコマンドについて詳しく調べる前に、タイムゾーンのリストを確認したいと思うかもしれません。 その場合は、次のコマンドを実行します。timedatectl list-timezones

ここで、マシンの現在のタイムゾーンを確認して以下を実行する場合は、grepコマンドにパイプされた以下のコマンドを実行します。

  • Linuxカーネルファイルから日付、時刻、およびタイムゾーン情報を取得します(timedatectl)。
  • に一致するテキスト行を検索して印刷します Time zone テキストパターン。
timedatectl | grep “Time zone”

以下に示すように、出力には、マシンに設定されている現在のタイムゾーンのみが表示されます。

Grepを使用してタイムゾーンを確認する
Grepを使用してタイムゾーンを確認する

結論

このチュートリアルでは、日付、時刻、およびLinuxタイムゾーンのクエリの多くの実用的な例について説明しました。 日付と時刻の形式を操作し、過去と未来の日付を計算する方法を学びました。 date 指図。 あなたも走った timedatectlgrep システムのタイムゾーンを確認するコマンド。

では、過去と未来の日付の計算や日付形式の変換などのタスクを自動化するスクリプトをさらに作成してみませんか? 多分 cronジョブを作成する スクリプトの実行をスケジュールするには?

The post 効果的な管理Linuxタイムゾーン(ステップバイステップチュートリアル) appeared first on Gamingsym Japan.