2009-12-10 08:38:25 +0000 2009-12-10 08:38:25 +0000
22
22

Jak wykonać skrypt powłoki poprzez crontab?

Mam skrypt notify.sh, który wygląda jak:

notify-send "hi welcome"

Moje powiadomienie crontab na 2 PM:

0 14 * * * home/hacks/notify.sh

Jednak to nie działa. W czym tkwi problem?

Odpowiedzi (6)

38
38
38
2009-12-10 09:04:32 +0000

W twoim skrypcie brakuje linii #! na początku, która jest magią interpretowaną przez jądro, aby powiedzieć, który interpreter poleceń ma być użyty dla skryptu.

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, ponieważ prosisz, aby działo się to tylko raz dziennie, czy strefa czasowa crontabu jest taka sama jak twoja własna strefa czasowa? Może się okazać, że dzieje się to o 14:00 GMT.

18
18
18
2010-03-25 06:05:09 +0000

Jak uruchomić crontab jest proste tylko . Tutaj zamierzam powiedzieć jak uruchomić zadania crontab. Jest to przydatne dla każdego, kto utknął na crontabie.

*/1 * * * * cd /home/hacks && sh notify.sh

Aby skrypt był wykonywalny, musimy wykonać:

chmod +x home/hacks/notify.sh

Tutaj uruchamiam ten skrypt co jedną minutę … Wykonując poniższy skrypt, możesz zapisać go w pliku dziennika, aby sprawdzić czy działa

zapisz dziennik

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

wyślij pocztę

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
5
5
5
2009-12-10 08:42:40 +0000

4 hipotezy:

  • cron daemon nie jest uruchomiony (zrób ps axfww | grep cron i sprawdź)

  • notify-send próbuje wysłać wyjście do terminala lub sesji X - ale jest uruchamiany z poziomu środowiska cron i nie wie “z kim rozmawiać”, że tak powiem.

  • twój skrypt nie jest wykonywalny

  • ścieżka home/ w skrypcie crontab jest względna do użytkownika, jako który skrypt jest wykonywany. Spróbuj użyć pełnej ścieżki

1
1
1
2012-03-11 00:33:46 +0000

Dodaj export DISPLAY=:0 powyżej linii notify-send w swoim skrypcie. To odnosi się do drugiego punktu lornezoga.

0
0
0
2015-10-24 12:00:18 +0000

Po pierwsze, musimy edytować crontab z komendą crontab -e a następnie wewnątrz tej Crontab dodać ścieżkę do skryptu wykonywalnego i w naszym przypadku tak * 14 * * * home/hacks/notify.sh >/dev/null 2>&1 .

Start /Stop / restart usługi cron

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl stop crond.service

-2
-2
-2
2018-12-28 16:01:47 +0000

całkiem proste, dodaj następującą linię na dole pliku crontab poprzez:sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &