Come impostare un cron job per eseguire uno script di shell?


44

Avevo impostato un lavoro cron:

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

Il problema principale è che al momento della pianificazione si è verificato un errore: "la posta è stata inviata a / var / spool / mail / lucky".

Il contenuto di myfile.sh è:

mkdir jh
cd jh 


2
se myfile.sh è impostato come eseguibile?
rogerdpack,

Risposte:


61

Questo non va bene per uno script impostato come cron job:

mkdir jh
cd jh 

È necessario fornire il percorso completo in cui jhdeve essere creata la directory. Inoltre, in questo percorso dovresti avere l'autorizzazione per creare nuovi file / directory.

Ad esempio, il tuo script dovrebbe apparire come:

#!/bin/sh

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

Inoltre /usr/bin/shnon è la strada giusta per sh. La strada giusta è /bin/sh. Puoi verificarlo con il whereis shcomando. E anche così, il tuo lavoro cron dovrebbe apparire come:

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

Non dimenticare di rendere eseguibile lo script:

chmod +x /home/lucky/myfile.sh

Awsome, mi ha salvato la vita :) Il mio funziona bene così. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki,

5

Il percorso in cui questo sembra creare la cartella è /. Questo perché crontabrichiede il percorso completo della cartella e dei file in tutti i file che esegue.

Quindi dovrebbe essere il percorso in myfile.sh

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.shQuesta riga è corretta anche se dovresti controllare il percorso per vedere se sh esiste su / usr / bin / sh (usa which shper vedere il percorso dove esiste sh; il mio era / bin / sh)

Se hai fretta di iniziare a scrivere crontab questo link ha degli esempi piuttosto validi

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.