У меня есть скрипт 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
Кроме того, поскольку вы просите, чтобы это происходило только один раз в день, совпадает ли часовой пояс crontab с вашим собственным часовым поясом? Это может произойти в 2 часа дня по Гринвичу.
Сделать запуск crontab просто. Здесь я собираюсь рассказать, как запускать задания crontab. Это полезно для всех, кто застрял на crontab.
*/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
и проверьте)
notify-send пытается отправить вывод на терминал или сеанс X - но он запускается из среды cron
и не знает, с кем говорить, так сказать.
ваш скрипт не исполняемый
home/
path в скрипте crontab относится к пользователю, от имени которого выполняются скрипты. Попробуйте использовать полный путь
Добавьте export DISPLAY=:0
над строкой уведомления-отправки в вашем скрипте. Это относится ко второму пункту Лорнезога.
Вы должны открыть crontab следующей командой:
crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh
Это будет запускать ваш сценарий один раз в час с 8:00 до 17:00 в 10 минут после часа каждый понедельник, среду и пятницу.
Прежде всего, нам нужно отредактировать crontab с помощью команды crontab -e
а затем внутри этого Crontab
добавить сценарий Path of Executable и в вашем случае, как это * 14 * * * home/hacks/notify.sh >/dev/null 2>&1
.
Запуск / остановка / перезапуск службы cron
/etc/init.d/crond start /stop / restart
service crond start /stop /restart
systemctl stop crond.service
systemctl stop crond.service
довольно просто, добавьте следующую строку внизу файла crontab с помощью:sudo nano /etc/crontab
@reboot root cd /home/pi/node-sonos-http-api && npm start &