当シェルスクリプトの実行日付と、
とあるログファイルの最終更新日を比較して、
一致しなければログファイル名を前日分としてリネームしたいです。
前提
シェルスクリプト/home/testuser/main.sh
では、当スクリプト内でとあるメッセージログを
ログパス/home/testuser/test.log
に出力します。
bash
1#!/bin/bash - 2# /home/testuser/main.sh 3 4# ログファイル名を定義 5readonly LOG_FILE="/home/testuser/test.log" 6 7# ログファイルパスへ、ログ出力する 8echo "[$(date '+%Y/%m/%d %H:%M:%S.%3N')]sampleMsg" | tee -a ${LOG_FILE} > /dev/null 2>&1
なお、/home/testuser/main.sh
は、
30秒ごとにcronで実行します。
crontab -l
* * * * * for i in 0 30;do (sleep ${i} ; /home/testuser/main.sh) & done
###実現したいこと
日付が変わって1回目のcron実行時に、
/home/testuser/main.sh
内で
ログ出力していた前日の
/home/testuser/test.log
をリネームし、同ディレクトリに
/home/testuser/piyo.log.yyyy-mm-dd
(前日の日時)として格納したいです。
該当のソースコード
bash
1#!/bin/bash - 2 3readonly LOG_FILE="/home/testuser/test.log" 4 5# TODO 6if [ ];then 7 # 今回のスクリプト実行時、/home/testuser/test.logの最終更新日より日付が変わっていたら、 8 # /home/testuser/test.logを下記の書式にリネームする 9 # /home/testuser/test.log.yyyy-mm-dd 10fi 11 12echo "[$(date '+%Y/%m/%d %H:%M:%S.%3N')]sampleMsg" | tee -a ${LOG_FILE} > /dev/null 2>&1 13
リネーム自体はmvコマンドでできたのですが、
「今周期で、対象ログの最終更新日から日付が変わっていたら...」という分岐処理ができませんでした。
お詳しい方、どのように実装すればよいかをご教示いただけませんでしょうか?
不勉強で申し訳ないのですが、よろしくおねがいします。
補足情報(FW/ツールのバージョンなど)
Linux
CentOS7
bash
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/14 08:55
2020/04/14 09:10
2020/04/16 06:05