Odpowiedzi:
W twoim skrypcie brakuje #! linia na początku, czyli magia interpretowana przez jądro, która mówi, który interpreter poleceń ma zostać użyty w skrypcie.
Niech to wygląda tak:
#!/bin/sh
notify-send "hi welcome"
i upewnij się, że skrypt jest wykonywalny:
ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh
Ponadto, skoro pytasz, aby zdarzyło się to tylko raz dziennie, to czy strefa czasowa crontab jest taka sama jak twoja własna strefa czasowa? Może się tak zdarzyć o 14.00 GMT.
Uruchamianie crontab jest łatwe. Tutaj powiem, jak uruchomić zadania crontab. Jest przydatny dla każdego, kto utknął na crontab.
*/1 * * * * cd /home/hacks && sh notify.sh
Aby skrypt był wykonywalny, musimy:
chmod +x home/hacks/notify.sh
Tutaj uruchamiam ten skrypt na każdą minutę ... Wykonując poniższy skrypt, możesz zapisać go w pliku dziennika, aby sprawdzić, czy działa
napisz dziennik
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log
Wyślij maila
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
4 hipoteza:
demon cron nie działa (zrób ps axfww | grep cron
i sprawdź)
powiadomienie-wysyłanie próbuje wysłać dane wyjściowe do terminala lub sesji X - ale jest uruchamiane z poziomu cron
środowiska i nie wie „z kim rozmawiać”, że tak powiem.
twój skrypt nie jest wykonywalny
home/
ścieżka w crontab skrypt jest w stosunku do użytkownika skrypty zostanie wykonany jako. Spróbuj użyć pełnej ścieżki
Musisz otworzyć crontab za pomocą następującego polecenia:
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
Spowoduje to uruchomienie skryptu raz na godzinę od 8:00 do 15:00 o 10 minut po godzinie w każdy poniedziałek, środę i piątek.
Przede wszystkim musimy edytować plik crontab za pomocą polecenia, crontab -e
a następnie w środku Crontab
dodać ścieżkę skryptu wykonywalnego, aw twoim przypadku w ten sposób
* 14 * * * home/hacks/notify.sh >/dev/null 2>&1
.
Uruchom / zatrzymaj / uruchom ponownie usługę cron
/etc/init.d/crond start /stop / restart
service crond start /stop /restart
systemctl stop crond.service
systemctl stop crond.service
całkiem proste, dodaj następujący wiersz na dole pliku crontab przez:
sudo nano /etc/crontab
@reboot root cd /home/pi/node-sonos-http-api && npm start &