Как выполнить скрипт оболочки через crontab?
У меня есть сценарий notify.sh
, который выглядит так:
notify-send "hi welcome"
Мое crontab-уведомление на 2 часа дня:
0 14 * * * home/hacks/notify.sh
Однако, это не работает. В чем проблема?
У меня есть сценарий notify.sh
, который выглядит так:
notify-send "hi welcome"
Мое crontab-уведомление на 2 часа дня:
0 14 * * * home/hacks/notify.sh
Однако, это не работает. В чем проблема?
В начале вашего скрипта отсутствует строка #!, которая является волшебной интерпретацией ядра, говорящей о том, какой командный интерпретатор должен быть использован для скрипта.
Сделайте так, чтобы это выглядело так:
#!/bin/sh
notify-send "hi welcome"
и убедитесь, что сценарий исполняемый:
ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh
Также, поскольку вы просите, чтобы это происходило только раз в день, является ли часовой пояс кронтаба таким же, как и ваш собственный часовой пояс? Вы можете обнаружить, что это происходит в 14:00 по Гринвичу.
Сделать работу с кронтабом просто. Вот я скажу, как делать работу с кронтабом. Это полезно для любого, кто застрял на кронтабе.
*/1 * * * * cd /home/hacks && sh notify.sh
Чтобы сделать скрипт исполняемым, мы должны сделать:
chmod +x home/hacks/notify.sh
Здесь я запускаю этот скрипт каждую минуту … Делая нижеприведенный скрипт, вы можете записать его в файл журнала, чтобы узнать, работает ли он
записать журнал
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log
отправить почту
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
4 гипотеза:
демон cron не запущен (сделайте ps axfww | grep cron
и проверьте)
отправитель уведомлений пытается отправить вывод на терминал, или сеанс X – но запускается из окружения cron
и не знает, так сказать, “с кем поговорить”.
ваш скрипт не является исполняемым
путь home/
в crontab скрипте связан с пользователем, от имени которого выполняются скрипты. Попробуйте использовать полный путь
Прежде всего, нам нужно отредактировать кронтаб с командой 0x6 и чем внутри этого 0x6 и добавить Путь исполняемого сценария и в вашем случае, как это 0x6 и . 0x2 и 0x2 и Пуск / Стоп / перезагрузка cron службы 0x2 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и 0x2 и systemctl стопа crond.service