Mam notify.sh
skrypt, który wygląda następująco:
notify-send "hi welcome"
Moje powiadomienie o crontabie o 14.00:
0 14 * * * home/hacks/notify.sh
To jednak nie działa. Jaki jest problem?
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.
Aby skrypt był wykonywalny, musimy:
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
Wyślij maila
źródło
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źródło
Dodaj
export DISPLAY=:0
powyżej skryptu powiadomienia-wyślij. To dotyczy drugiego punktu Lornezoga.źródło
Musisz otworzyć crontab za pomocą następującego polecenia:
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.
źródło
Przede wszystkim musimy edytować plik crontab za pomocą polecenia,
crontab -e
a następnie w środkuCrontab
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
źródło
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 &
źródło