条件付きcrontabエントリ

条件付きcrontabエントリ

スクリプトを実行し、その出力を MD5 ハッシュとして currenthash.log というファイルに保存する crontab エントリがあります。

しかし、MD5 チェックサムが変更された場合に changedhash.log などの新しいファイルを作成するという要件を満たすことができません。これは cronjob またはスクリプト自体で実行できるものでしょうか?

答え1

cronタスクの実行方法に関するロジックはありません。

指定した瞬間にコマンドを生成するだけです。

そのようなインテリジェンスを実現するには、スクリプトに実装する必要があります。

これを管理する別の方法としては、logrotate(ある条件でログファイルをローテーションする)またはincroncronトリガーがinotify時間ではなくイベント。

答え2

古いハッシュをどこかに保存し、それを新しいハッシュと比較する必要があります。次のようになります:

#!/bin/sh
file=/path/to/file
hashfile=/path/to/stored/hash
newhash=$(md5sum "$file")
oldhash=$(cat "$hashfile")
if [ "$newhash" != "$oldhash" ]; then
    echo it changed...
fi
echo "$newhash" > "$hashfile"

関連情報