2009-12-10 08:38:25 +0000 2009-12-10 08:38:25 +0000
22
22

Как выполнить скрипт оболочки через crontab?

У меня есть сценарий notify.sh, который выглядит так:

notify-send "hi welcome"

Мое crontab-уведомление на 2 часа дня:

0 14 * * * home/hacks/notify.sh

Однако, это не работает. В чем проблема?

Ответы (6)

38
38
38
2009-12-10 09:04:32 +0000

В начале вашего скрипта отсутствует строка #!, которая является волшебной интерпретацией ядра, говорящей о том, какой командный интерпретатор должен быть использован для скрипта.

Сделайте так, чтобы это выглядело так:

#!/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 по Гринвичу.

18
18
18
2010-03-25 06:05:09 +0000

Сделать работу с кронтабом просто. Вот я скажу, как делать работу с кронтабом. Это полезно для любого, кто застрял на кронтабе.

*/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
5
5
5
2009-12-10 08:42:40 +0000

4 гипотеза:

  • демон cron не запущен (сделайте ps axfww | grep cron и проверьте)

  • отправитель уведомлений пытается отправить вывод на терминал, или сеанс X – но запускается из окружения cron и не знает, так сказать, “с кем поговорить”.

  • ваш скрипт не является исполняемым

  • путь home/ в crontab скрипте связан с пользователем, от имени которого выполняются скрипты. Попробуйте использовать полный путь

1
1
1
2012-03-11 00:33:46 +0000

Добавьте export DISPLAY=:0 выше строки отправки уведомлений в вашем скрипте. Это адрес второго пункта Лорнзог.

0
0
0
2015-10-24 12:00:18 +0000

Прежде всего, нам нужно отредактировать кронтаб с командой 0x6 и чем внутри этого 0x6 и добавить Путь исполняемого сценария и в вашем случае, как это 0x6 и . 0x2 и 0x2 и Пуск / Стоп / перезагрузка cron службы 0x2 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и - 0x6 и 0x2 и 0x2 и systemctl стопа crond.service

-2
-2
-2
2018-12-28 16:01:47 +0000

довольно просто, добавьте следующую строку внизу кронтаб-файла через:sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &

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

6
10
5
37
3