Условная запись в crontab

Условная запись в crontab

У меня есть запись в crontab, которая выполняет скрипт и сохраняет вывод в файле, скажем, currenthash.log, в виде хеша MD5.

Но я не могу выполнить требование, при котором мне нужно создать новый файл, скажем, changedhash.log, если контрольная сумма MD5 меняется. Это то, что я могу сделать в cronjob или в самом скрипте?

решение1

cronне имеет логики относительно того, как выполняется задача.

Он просто запускает команду в указанный вами момент.

Чтобы получить такой интеллект, вам придется реализовать его в своем сценарии.

Другим способом управления этим может быть использование logrotate(ротации файлов журнала при определенных условиях) илиincron( cron-подобный сервис, где триггеры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"

Связанный контент