Como definir uma tarefa cron para executar um script de shell?

32

Eu defini um cron job:

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

O principal problema é que, no horário programado, há um erro: "mail enviado para / var / spool / mail / lucky".

O conteúdo do myfile.sh é:

mkdir jh
cd jh 
    
por Abhishek Tripathi 27.09.2013 / 20:17

2 respostas

47

Isso não é bom para um script que é definido como uma tarefa agendada:

mkdir jh
cd jh 

Você deve fornecer o caminho completo onde jh directory 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

Além disso, /usr/bin/sh não é o caminho certo para sh . O caminho certo é /bin/sh . Você pode verificar isso com o comando whereis sh . E, mesmo assim, seu cron job deve se parecer com:

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

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

chmod +x /home/lucky/myfile.sh
    
por Radu Rădeanu 27.09.2013 / 21:42
5

O caminho em que isso parece criar a pasta é / . Isso ocorre porque o crontab requer caminho completo para a pasta e 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.sh Esta linha está correta embora você deva verificar o caminho para ver se sh existe em / usr / bin / sh ou não (use which sh para ver o caminho onde sh existe; o meu era / bin / sh)

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

link

    
por penguinRaider 27.09.2013 / 21:53

Tags