22

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

notify-send "hi welcome"

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

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

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

7 ответов7

38

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

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

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

18

Сделать запуск 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
5

4 гипотеза:

  • демон cron не работает (выполните ps axfww | grep cron и проверьте)

  • notify-send пытается отправить вывод на терминал или сеанс X - но он запускается из среды cron и не знает, с кем говорить, так сказать.

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

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

1

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

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 минут после часа каждый понедельник, среду и пятницу.

0

Прежде всего, нам нужно отредактировать 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

-2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .