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.