o cron não é executado com o mesmo ambiente que
um shell interativo. Sua variável $HOSTNAME
não está definida.
Você pode configurá-lo no início do seu script da seguinte forma:
HOSTNAME="'/usr/bin/hostname'"
Eu tenho os seguintes scripts em execução no raspbian.
começar
#!/bin/bash
/root/config/commands 2>&1 > /root/log/$HOSTNAME.log
comandos
#!/bin/bash
source /root/config/variables
echo TestLine
/usr/bin/lftp ftp://user:[email protected] -e "set ftp:ssl-allow no ; set net:reconnect-interval-base 5 ; set net:max-retries 2 ; mirror -e /testgroup/music /root/media ; quit"
/usr/bin/mail -s "$HOSTNAME Report" $emailaddress < $logdir/$HOSTNAME.log''
Quando eu executo "start" manualmente, recebo o e-mail abaixo
TestLine
Total: 1 directory, 4 files, 0 symlinks
Quando eu executo usando o cron, recebo o seguinte email
TestLine
É assim que o crontab -e é configurado
@daily /root/start
Alguma idéia de por que o cron tira a saída lftp do email?
o cron não é executado com o mesmo ambiente que
um shell interativo. Sua variável $HOSTNAME
não está definida.
Você pode configurá-lo no início do seu script da seguinte forma:
HOSTNAME="'/usr/bin/hostname'"
Eu passei algum tempo lutando contra o problema sozinho. Decidiu ir com screen
. Por exemplo,
screen -dmS screen_name bash -c '/root/start'