Cron emite mensagem bin/sh: root: not found
Tenho alguns scripts agendados com o cron. A máquina está configurada para enviar email em caso de falha de algum comando. Eis um email que venho recebendo com frequencia:
----------------------------------
Subject:Cron <root@tucunare> root /home/acmlima/scripts/bash/bkp-mysql.bash
Body: /bin/sh: root: not found
----------------------------------
Fui analisar o conteudo do script e nao vi nenhuma chamada para /bin/sh, aliás coloquei /bin/bash.
O script executa normalmente, só não entendi esta mensagem que recebo.
----------------
script
----------------
#!/bin/bash
# definicao das variaveis
diretorio="/home/acmlima/bkp_mysql/"
arquivo="bkp_mysql.sql.gz"
email="[email protected]"
msg=""
log="/home/acmlima/scripts/bash/log_bkp_mysql.txt"
echo Resultado do script $0 > $log - $(date)
# comando do backup
mysqldump --opt --all-databases -u acmlima -psenha 2>> $log | gzip > $diretorio$arquivo;
# verifica se houve algum erro durante a execucao do comando acima
if [ $? -ne 0 ]
then
subject="---------->>[Erro]"
msg=" na geracao do backup MySQL<<----------"
fi
if [ "$msg" == "" ]
then
subject="---------->>[Sucesso]"
msg=" Backup realizado!<<----------"
fi
echo $subject $msg >> $log;
# ---------------FIM DO SCRIPT--------------------
O sh está instalado, o comando whereis sh retornou:
sh: /bin/sh.distrib /bin/sh /usr/share/man/man1/sh.1.gz
O trecho do meu crontab é esse:
# m h dom mon dow command
# realiza o backup das bases do MySQL
00 22 * * * /home/acmlima/scripts/bash/bkp-mysql.bash
# ---FIM DO CRONTAB ---
Alguém tem ideia do que possa ser?
Pesquisando mais, vi que havia 2 arquivos criados criados em "/var/spool/cron/crontabs" acmlima e root.Estes são exatamente os arquivos editados por "crontab -e". Um deles, o root, deve ter uma entrada inválida em alguma coluna
# /var/spool/cron/crontabs/root
32 12 * * * root /home/acmlima/scripts/bash/bkp-mysql.bash
As colunas do crontab pessoal são diferentes das do root?
Bem, removi este arquivo que não estava usando. Vamos aguardar para ver se não ocorre mais a mensagem de erro.
----------------------------------
Subject:Cron <root@tucunare> root /home/acmlima/scripts/bash/bkp-mysql.bash
Body: /bin/sh: root: not found
----------------------------------
Fui analisar o conteudo do script e nao vi nenhuma chamada para /bin/sh, aliás coloquei /bin/bash.
O script executa normalmente, só não entendi esta mensagem que recebo.
----------------
script
----------------
#!/bin/bash
# definicao das variaveis
diretorio="/home/acmlima/bkp_mysql/"
arquivo="bkp_mysql.sql.gz"
email="[email protected]"
msg=""
log="/home/acmlima/scripts/bash/log_bkp_mysql.txt"
echo Resultado do script $0 > $log - $(date)
# comando do backup
mysqldump --opt --all-databases -u acmlima -psenha 2>> $log | gzip > $diretorio$arquivo;
# verifica se houve algum erro durante a execucao do comando acima
if [ $? -ne 0 ]
then
subject="---------->>[Erro]"
msg=" na geracao do backup MySQL<<----------"
fi
if [ "$msg" == "" ]
then
subject="---------->>[Sucesso]"
msg=" Backup realizado!<<----------"
fi
echo $subject $msg >> $log;
# ---------------FIM DO SCRIPT--------------------
O sh está instalado, o comando whereis sh retornou:
sh: /bin/sh.distrib /bin/sh /usr/share/man/man1/sh.1.gz
O trecho do meu crontab é esse:
# m h dom mon dow command
# realiza o backup das bases do MySQL
00 22 * * * /home/acmlima/scripts/bash/bkp-mysql.bash
# ---FIM DO CRONTAB ---
Alguém tem ideia do que possa ser?
Pesquisando mais, vi que havia 2 arquivos criados criados em "/var/spool/cron/crontabs" acmlima e root.Estes são exatamente os arquivos editados por "crontab -e". Um deles, o root, deve ter uma entrada inválida em alguma coluna
# /var/spool/cron/crontabs/root
32 12 * * * root /home/acmlima/scripts/bash/bkp-mysql.bash
As colunas do crontab pessoal são diferentes das do root?
Bem, removi este arquivo que não estava usando. Vamos aguardar para ver se não ocorre mais a mensagem de erro.
Entre ou Registre-se para fazer um comentário.
Comentários
Pois é, observando sua entrada na crontab não me parece ter erro algum.
Pergunto, você programou para rodar esse script a partir da crontab do sistema ou sua pessoal?
Sobre o shell sh, ele é padrão a qualquer sistema embora a grande maioria das distribuições usem o bash como default. E por isso, também o shell padrão da crontab, e isso você observa ou pode editar no arquivo de configuração em /etc/crontab.
Em alguma linha do arquivo deve ter algo como: SHELL=/bin/sh
T+
Arlei