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
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?
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
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
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
Tags cron