Como definir um trabalho cron para executar um script de shell?

44

Eu havia definido um trabalho cron:

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

O principal problema é que, no horário do agendamento, existe um erro: "o correio foi enviado para / var / spool / mail / lucky".

O conteúdo do myfile.sh é:

mkdir jh
cd jh 
Abhishek Tripathi
fonte
Isso pode ajudá-lo: help.ubuntu.com/community/CronHowto
PeppeDAlterio
2
se myfile.sh definido como executável?
Rogerdpack 27/09/2013

Respostas:

61

Isso não está correto para um script definido como um trabalho cron:

mkdir jh
cd jh 

Você deve fornecer o caminho completo em que o jhdiretório deve ser criado. Além disso, nesse caminho, você deve ter permissão para criar novos arquivos / diretórios.

Por exemplo, seu script deve se parecer com:

#!/bin/sh

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

Também /usr/bin/shnão é o caminho certo para sh. O caminho certo é /bin/sh. Você pode verificar isso com o whereis shcomando E mesmo assim, seu trabalho cron deve ter a seguinte aparência:

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

Não se esqueça de tornar o script executável:

chmod +x /home/lucky/myfile.sh
Radu Rădeanu
fonte
Awsome, salvou minha vida :) O meu funciona bem assim. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki 15/16
5

O caminho em que isso parece estar criando a pasta é /. Isso ocorre porque crontabrequer o caminho completo para a pasta e os arquivos em todos os arquivos que ele executa.

Portanto, o caminho no myfile.sh deve ser

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.shEssa linha está correta, mas você deve verificar o caminho para ver se sh existe em / usr / bin / sh ou não (use which shpara ver o caminho em que sh existe; o meu era / bin / sh)

Se você está com pressa de começar a escrever crontab, este link tem bons exemplos

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

penguinRaider
fonte