Tenho alguns comandos que funcionam no bash, mas não como cronjob. Para ver a causa do problema, estou salvando a saída em um arquivo, aqui meu exemplo:
51 * * * * source ~ / .rvm / scripts / rvm >> stack.log 2>&1
O conteúdo do arquivo de log é:
/ bin / sh: 1: source: not found
Isso significa que o cron está usando sh
ao invés de bash
. Eu tentei mudá-lo no /etc/crontab
:
SHELL=/bin/bash
Mas isso não funciona. Eu olhei em / etc / passwd
e aqui eu vejo que o daemon está usando sh
como shell padrão. Ambos root
e pi
têm bash
como shell padrão.
root: x: 0: 0: root : / root: / bin / bashdaemon: x: 1: 1: daemon: / usr / sbin: / bin / shpi: x: 1000: 1000: ,,,: / home / pi: / bin / bash
O que devo fazer para alterar o shell padrão do cron? Eu não definiria / bin / bash
para o usuário daemon em / etc / passwd
... imho, isso não é uma boa ideia.
edit Budap:
ls -l / bin / shlrwxrwxrwx 1 root 4 30 de março de 2012 / bin / sh -> traço
aqui o conteúdo do /etc/crontab
:
# / etc / crontab: crontab de todo o sistema # Ao contrário de qualquer outro crontab, você não precisa executar o comando `crontab '# para instalar a nova versão ao editar este arquivo # e arquivos em /etc/cron.d. Esses arquivos também têm campos de nome de usuário, # que nenhum dos outros crontabs faz.SHELL = / bin / bashPATH = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin # mh dom mon dow user command17 * * * * root cd / && run-parts --report /etc/cron.hourly25 6 * * * root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
47 6 * * 7 root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.weekly) 52 6 1 * * root test -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.monthly) #