シェルスクリプトを実行した日付のファイル名でファイルを作成する方法
目次
スポンサードリンク
Linuxのシェルスクリプトでファイルを保存する際、ファイル名の末尾にスクリプトを実行した日付を含めてファイル保存する方法を解説します。スクリプトを cronで定期的に実行する場合など、毎日異なるファイル名でファイルを保存したいときに役立つテクニックです。
サンプルコード
#!/bin/bash
function func_main {
# 1日前の日付を保存
date=`date -d '1 day ago' +%Y%m%d`
# httpd のアクセスログの行数を保存
result=`cat /var/log/httpd/access_log | wc -l`
# ファイル出力
echo "$result" >> /tmp/wc_$date.log
}
func_main
exit 0
このサンプルでは、変数 date に実行した前日の日付を保存しています。 変数 result には、httpdのアクセスログの行数を wcコマンドでカウントした結果を保存しています。 echoコマンドで 変数 result の内容を、 /tmpディレクトリに、wc_【日付】.log のファイル名で保存しています。このシェルスクリプトを実行すると、wc_20240409.log のように日付付きのファイルに 変数 resultの内容を保存します。
dateコマンドで使えるおもな書式
dateコマンドには日付を制御するオプションがあり主な書式は以下の通りです。
書式 | 内容 |
---|---|
%Y | 年の西暦表示 |
%m | 月を2桁で表示(01~12) |
%d | 日を2桁で表示(01~31) |
%H | 時間を2桁で表示(00~23) |
%M | 分を2桁で表示(00~59) |
%S | 秒を2桁で表示(00~59) |
また、-d オプションを付与することで、実行日時以外を指定することができます。
-dオプションでは、指定した日付と時刻にの日時を設定することや、日付や時刻の加算、減算を行うことができます。
指定した日付と時刻にの日時を設定
date -d "2024-04-10 10:00:00"
日付と時刻の加算・減算を行う
date -d "today +1 day" # 1 日後を表示
date -d "today -1 hour" # 1 時間前を表示
その他、today (今日の日付)、yesterday (昨日)、tomorrow (明日) も指定できます。オプションで使用できる書式はOSによって若干の違いがあるので、対象のOSで利用できるかは確認が必要です。
まとめ
日付を含めたファイル名でファイルを保存する方法を解説しました。システムの監視スクリプトなど定期的に実行するシェルスクリプトなどで活用できるテクニックです。
シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。
最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。
Search
Recent Posts
- カーネル更新やパッケージのパッチ適用後、OSの再起動が必要か確認するLinuxコマンド(needs-restarting)
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法