logrotateファイルの名前を取得しますか?

logrotateファイルの名前を取得しますか?

私はLinuxとbashスクリプトを初めて知ってから2週間しか経っていないので、何も知らないとしましょう。

開発上の理由から、ログファイルを別の場所と名前にコピーする必要があります。私のlogrotateファイルは次のとおりです。

/pub/share/logs/results.txt {
    daily
    rotate 30
    dateext
    compress
    delaycompress
    missingok
    notifempty
    postrotate
        sh /pub/share/scripts/result_rotate.sh $1 > /dev/null
    endscript
}

Bashスクリプトは簡単です。

#!/bin/bash

date=$(date +%Y%m%d)
cp $1-$date /pub/share/reports/data.log

私はそうはわかりませんが、持つスクリプトファイルに入れるか、後方回転ブロックに入力することができれば、これはうまくいきます。

回転するファイルの名前を渡しますが、日付拡張子(したがって上記の日付コード)に名前が変更された後に渡されます。これは安全な方法ですか?正しいマッチが行われない状況が発生しますか?

ベストアンサー1

うん、ちょうど書けばいい。バックスピン目詰まり:

cp $1-$(date +%Y%m%d) /pub/share/reports/data.log >/dev/null

今日の日付のように悪い場合バックスピン 翌日実行するように公開されているため、cpコマンドでファイルをコピーすることはできません。これを行うには、今日の日付が回転したファイルではなく、1日前のファイルを常にインポートできます。

cp $1-$(date -d'-1day' +%Y%m%d) /pub/share/reports/data.log >/dev/null

あるいは、もちろん、今日の日付ファイルと昨日の日付ファイルの2つをコピーすることもできます。

おすすめ記事