
У меня есть запись в 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"