Jak wykonać skrypt powłoki za pomocą crontab?


22

Mam notify.shskrypt, 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?

Odpowiedzi:


39

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.


+1 Ta odpowiedź jest niesamowita - szczególnie biorąc pod uwagę, że skrypt musi być wykonywalny! Dzięki!
FXQuantTrader

Bardzo subtelne wyjaśnienie. Moja opinia
Fokwa Best

18

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

2
czyż nie będzie działać „* / 1 * * * * sh /home/hacks/notify.sh”?
user1179459,

5

4 hipoteza:

  • demon cron nie działa (zrób ps axfww | grep croni 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


1

Dodaj export DISPLAY=:0powyżej skryptu powiadomienia-wyślij. To dotyczy drugiego punktu Lornezoga.


0

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.


0

Przede wszystkim musimy edytować plik crontab za pomocą polecenia, crontab -ea następnie w środku Crontabdodać ś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


-2

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 &


To nie wydaje się być odpowiedzią na pytanie.
Ljm Dullaart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.