Відповіді:
У вашому сценарії відсутній номер #! на початку, що є магією, інтерпретованою ядром, щоб сказати, який інтерпретатор команд буде використовуватися для сценарію.
Зробіть це так:
#!/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 таким же, як ваш власний часовий пояс? Можливо, це відбудеться о 14:00 GMT.
Зробити кронтаб працює просто. Тут я хочу сказати, як запустити роботу 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 не запущено (виконайте команду a ps axfww | grep cron
і перевірити)
сповіщення-відправка намагається надіслати вивід терміналу, або сеанс X, але воно виконується зсередини cron
навколишнього середовища і він не знає "кому розмовляти", так би мовити.
Ваш сценарій не виконується
home/
Шлях у скрипті crontab відносно користувача, який виконується скриптами. Спробуйте використати повний шлях
Ви повинні відкрити 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 ранку та 3 ранку за 10 хвилин через кожний понеділок, середу та п'ятницю.
Перш за все, нам потрібно редагувати crontab за допомогою Command crontab -e
і ніж усередині цього Crontab
додайте шлях до виконуваного сценарію та у вашому випадку так * 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 зупинити crond.service
досить простий, додайте наступний рядок у нижній частині файлу crontab: sudo nano /etc/crontab
@reboot root cd /home/pi/node-sonos-http-api && npm start &