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

Поскольку вы используете тест, чтобы избежать создания записи каталога с уже существующим именем, не имеет значения, что это за запись (обычный файл, каталог, FIFO, узел устройства или другое )только то, что она уже существует и не может быть создан (, так как имя уже используется ).

Тест -fобнаруживает только «обычные файлы». -eобнаруживают некоторые другие типы.

Это ближе к вашим намерениям:

[ -e "$output_filename" ] && 
    print_error_and_exit 6 "Destination file name exists."

Однако -eне обнаруживает ссылки. Вам нужно использовать эту конструкцию:

[ -e "$output_filename" ] || [ -L "$output_filename" ] && 
    print_error_and_exit 6 "Destination file name exists."
0
28.11.2019, 11:18
2 ответа

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

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

Для такого рода интеллекта вы должны реализовать его в своем скрипте.

Другим способом управления может быть использованиеlogrotate(чередования файлов журналов при некоторых условиях )илиincron(cron-таких как служба, где триггерами являютсяinotifyсобытия, а не время ).

0
28.01.2020, 03:05

Вам нужно где-то сохранить старый хэш, а затем сравнить его с новым. Что-то в этом направлении:

#!/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"
0
28.01.2020, 03:05

Теги

Похожие вопросы