ubuntu 14.04 crontab não roda scripts simples

1

Eu criei um script de teste primitivo apenas para criar um diretório, para ver se o crontab funciona:

#!/bin/bash
mkdir test_folder
exit
O script

está localizado aqui /home/root/test/test.sh

Eu fiz este script executável com:

sudo chmod u+x test.sh

quando executo o script manualmente sudo /home/root/test/test.sh o "test_folder" é criado. No entanto, quando eu adicioná-lo ao crontab que nada acontece!

Eu abri o crontab com sudo crontab -e e adicionei as seguintes regras:

00 * * * * /home/root/test/test.sh
10 * * * * /home/root/test/test.sh
20 * * * * /home/root/test/test.sh
30 * * * * /home/root/test/test.sh
40 * * * * /home/root/test/test.sh
50 * * * * /home/root/test/test.sh

quando eu verifico o crontab com sudo crontab -l eu posso ver claramente que as regras estão lá, mas a pasta NÃO é criada! Script apenas não funciona!

Mais tarde eu descobri que o problema pode estar com o ponto no nome do script ... então eu mudei o nome de test.sh para test_sh ... tornei executável com sudo chmod u+x test_sh , tentei manualmente, teste pasta foi criado ... do que eu adicionei ao crontab sudo crontab -e :

00 * * * * /home/root/test/test_sh
10 * * * * /home/root/test/test_sh
20 * * * * /home/root/test/test_sh
30 * * * * /home/root/test/test_sh
40 * * * * /home/root/test/test_sh
50 * * * * /home/root/test/test_sh

Mas mais uma vez nada ... O que estou fazendo de errado? Este é um script primitivo, deve funcionar sem problemas! Eu esqueci alguma coisa?

EDITAR: Obrigado a todos ... especialy heemayl e Gauthier: " Tente dar um caminho completo em seu script ( mkdir /home/root/test/test_folder ). " ele fez o truque ... agora parece que o script funciona ... então nenhum parente relativo ... MUITO OBRIGADO

    
por mrc 21.09.2016 / 22:03

1 resposta

1

Verifique o diretório pessoal de root , o diretório test_folder é criado lá, precisamente /root/test_folder . Observe que você colocou o script na tabela root do cron fazendo sudo crontab -e , então o diretório seria /root/test_folder .

cron é o padrão para o diretório inicial do usuário em execução ( root neste caso) antes de executar qualquer tarefa, assim como você tem um caminho relativo, ou seja, apenas test_folder , o diretório será criado em root 's home directory.

Isso também é semelhante a outros casos em que caminhos relativos são usados dentro de um script e um deles executa o script de outro local; O PWD sempre se referirá ao diretório de onde o script está sendo executado, não onde o script está armazenado.

Observe que o exit no final é redundante.

    
por heemayl 21.09.2016 / 22:36