cronjob não consegue encontrar o arquivo de script

3

Eu tenho um script ( buphomebasis.sh ) que usa o rsync para fazer backups do meu diretório pessoal. Seu conteúdo é:

sudo rsync -avz /home /media/myname/mybackupdsk

Funciona muito bem, apenas invocando esse script a partir da linha de comando. Agora fiz um cronjob ( backup.sh ); seu conteúdo é:

SHELL=/bin/bash
45 5 * * * buphomebasis.sh

Isso deve fazer um backup todos os dias às 45 minutos depois das 5 da manhã. Ambos os scripts estão no meu diretório home/myname/cronjobs/ , mas a execução de backup.sh resulta na seguinte mensagem de erro:

cronjobs/backup.sh: regel 23: 45: opdracht niet gevonden

ou em inglês:

cronjobs/backup.sh: line 23: 45: command not found

Alguém pode me ajudar com o que está errado / faltando neste cronjob?

    
por jfh 07.11.2017 / 19:29

3 respostas

3

Use o caminho completo. Cron não herda seu caminho, então você precisa usar caminhos completos para que um script seja executado corretamente em Cron.

Então, você teria uma entrada do cron como segue:

45 5 * * * /home/myname/cronjobs/buphomebasis
    
por Thomas Ward 07.11.2017 / 20:08
0

Observação: substitua todas as ocorrências de $USER pelo seu nome de usuário real.

Você tem que usar o caminho completo, senão o trabalho do Cron não conseguirá encontrá-lo. Você precisa colocar algo como

SHELL=/bin/bash
45 5 * * * /home/$USER/buphomebasis.sh

no seu crontab para que ele seja executado. Você também precisa ter certeza de que o script é executável, então tenha certeza de ter #!/bin/bash no começo do seu script. Em seguida, torne-o executável com chmod +x /home/$USER/buphomebasis.sh .

Eu recomendo que você escreva seu roteiro como:

#!/bin/bash
rsync -avz /home /media/myname/mybackupdsk >> /home/$USER/backup.log

para que você possa ver se o rsync tem algum erro. Além disso, certifique-se de colocá-lo no root crontab, para que ele possa ser executado sem uma senha, senão ele falhará. Você pode editar o crontab raiz com

sudo crontab -u root -e
    
por NerdOfLinux 07.11.2017 / 20:18
0

Você está usando sudo crontab -e ou apenas crontab -e quando faz suas alterações? Um irá adicioná-lo ao crontab do seu usuário e o outro ao root.

O caminho completo não faria mal nem

    
por m_krsic 07.11.2017 / 19:37

Tags