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

29

Ho impostato un cron job:

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

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

Il contenuto di myfile.sh è:

mkdir jh
cd jh 
    
posta Abhishek Tripathi 27.09.2013 - 20:17
fonte

2 risposte

44

Questo non è ok per uno script impostato come cron job:

mkdir jh
cd jh 

Dovresti fornire il percorso completo in cui deve essere creata la directory jh . Inoltre, in questo percorso dovresti avere il permesso di creare nuovi file / directory.

Ad esempio, il tuo script dovrebbe essere simile a:

#!/bin/sh

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

Anche /usr/bin/sh non è il percorso corretto per sh . Il percorso corretto è /bin/sh . Puoi controllarlo con il comando whereis sh . E anche così, il tuo lavoro cron dovrebbe assomigliare a:

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

Non dimenticare di rendere eseguibile lo script:

chmod +x /home/lucky/myfile.sh
    
risposta data Radu Rădeanu 27.09.2013 - 21:42
fonte
5

Il percorso in cui sembra creare la cartella at è / . Questo perché crontab richiede percorso completo per cartella e file in tutti i file che esegue.

Quindi il percorso in myfile.sh dovrebbe essere

mkdir <absolutePath>/jh

cd <absolutePath>/jh

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

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

link

    
risposta data penguinRaider 27.09.2013 - 21:53
fonte

Leggi altre domande sui tag