Я создал скрипт для установки двух скриптов в crontab.
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
Сценарий запускается и добавляет две строки в crontab. Но если я снова запускаю скрипт, он снова добавляет эти строки, поэтому у меня будет четыре строки, говорящие о том же. Я хочу, чтобы скрипт установки выполнялся так, чтобы строки, вставленные в crontab, не повторялись. Как мне это сделать
Ответы:
Я бы порекомендовал использовать
/etc/cron.d
болееcrontab
.Вы можете размещать файлы, в
/etc/cron.d
которых ведут себя как записи crontab. Хотя формат немного другой.Например
/etc/cron.d/pcap
:Разница в формате заключается в добавлении пользователя для запуска задания, как после указания времени.
Теперь вы можете просто проверить, существует ли файл, и если вы перезаписали его, это не имеет значения.
Обратите внимание, что, возможно, ваш демон cron может этого не иметь
/etc/cron.d
. Я не знаю, какие демоны cron имеют его, но vixie cron является стандартным демоном cron в Linux, и это так.источник
Вместо этого вы можете объявить функцию:
и вызвать его, сказав:
Это добавит строку, только если не существует в файле.
источник
-F
заставитgrep
интерпретировать шаблон как фиксированную строку.от Bash я использую
Также используйте этот скрипт для добавления записей cron на удаленных серверах.
источник
Вы можете написать скрипт и добавить его в crontab, чтобы остановить его:
источник
kill -9
следует делать только в крайнем случае - unix.stackexchange.com/questions/8916/…