На прошлой неделе на работе я выполнял какую-то операционную задачу, которая требовала от меня запускать скрипт каждую минуту, а затем проверять его вывод и выполнять какие-то действия на его основе.
Сначала я делал это вручную, но потом понял — подождите, я разработчик, моя работа — автоматизировать многие из этих вещей. Поэтому я погуглил, как настроить скрипт cron на моем Mac, а также как его удалить, когда закончите. Мне нужно было это каждый день в течение недели в течение какого-то времени.
Способ 1
Первый и очень простой способ — просто использовать crontab для установки cron, а когда закончите, просто удалите эту строку.
- Выполнить crontab -e
- Добавьте строку задания cron со сценарием, который вы хотите выполнить. Сохрани это.
- После этого удалите строку, используя тот же метод
Проблемы, с которыми я столкнулся
- Что ж, каждый раз, когда я должен начать, я должен делать те шаги, которые подвержены ошибкам.
- Судя по всему, если ваш скрипт что-то выводит, cron и crontab не имеют права записывать это где-то в вашем домашнем каталоге, по крайней мере, в MacOS Catalina. Вот — это сообщение о переполнении стека, которое я нашел, объясняющее это.
Вот полная статья о том, как решить эту проблему.
Метод 2
Вот пошаговый метод, которому я пытался следовать, и в конце я опубликую ссылку на исходный код.
- Создал два скрипта install-cron.sh и remove-cron.sh.
install-cron.sh
#write out current crontab crontab -l > mycron #echo new cron into cron file echo "* * * * * sh $PWD/test.sh > $PWD/out.log 2>&1" >> mycron #install new cron file crontab mycron rm mycron
- Здесь test.sh содержит скрипт, который вы хотите выполнить.
- $PWD/out.log 2›&1 нужен только для того, чтобы убедиться, что в файл out.tx не записывается какая-либо ошибка.
удалить-cron.txt
crontab -l > mycron # removing the script from the file sed -i '' '/test.sh/d' ./mycron #install new cron file with what is left after my line is deleted crontab mycron rm mycron
Также вам необходимо запустить этот скрипт с помощью sudo, так как они созданы для пользователя root.
Эти простые сценарии действительно полезны, если я просто хочу настроить задания cron на своем Mac.
Вот исходный код на Github.
Также опубликовано в msrimal.blog