Jak ustawić zadanie CRON do uruchomienia skryptu powłoki?

44

Ustawiłem pracę crona:

20 * * * * /usr/bin/sh /home/lucky/myfile.sh

Główny problem polega na tym, że w czasie harmonogramu występuje błąd: „poczta została wysłana do / var / spool / mail / lucky”.

Zawartość myfile.sh to:

mkdir jh
cd jh 
Abhishek Tripathi
źródło
To może ci pomóc: help.ubuntu.com/community/CronHowto
PeppeDAlterio
2
jeśli myfile.sh ustawiony jako plik wykonywalny?
rogerdpack

Odpowiedzi:

60

Nie jest to właściwe dla skryptu ustawionego jako zadanie cron:

mkdir jh
cd jh 

Powinieneś podać pełną ścieżkę do jhkatalogu, w którym należy utworzyć katalog. Ponadto w tej ścieżce powinieneś mieć uprawnienia do tworzenia nowych plików / katalogów.

Na przykład skrypt powinien wyglądać następująco:

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

Nie /usr/bin/shjest też właściwa ścieżka sh. Właściwa ścieżka to /bin/sh. Możesz to sprawdzić za pomocą whereis shpolecenia. Mimo to twoja praca crona powinna wyglądać następująco:

20 * * * * /home/lucky/myfile.sh

Nie zapomnij, aby skrypt był wykonywalny:

chmod +x /home/lucky/myfile.sh
Radu Rădeanu
źródło
Awsome, uratowałem mi życie :) Mój działa tak dobrze. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki
5

Ścieżka, w której wydaje się, że tworzy to folder, to /. Jest tak, ponieważ crontabwymaga pełnej ścieżki do folderu i plików we wszystkich plikach, które wykonuje.

Tak więc ścieżka w pliku myfile.sh powinna być

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.shTa linia jest poprawna, ale powinieneś sprawdzić ścieżkę, aby sprawdzić, czy sh istnieje w / usr / bin / sh, czy nie (użyj, which shaby zobaczyć ścieżkę, w której istnieje sh; moja była / bin / sh)

Jeśli spieszysz się z pisaniem crontab, ten link zawiera całkiem dobre przykłady

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

penguinRaider
źródło