我在 raspbian 上运行了以下脚本。
开始
#!/bin/bash
/root/config/commands 2>&1 > /root/log/$HOSTNAME.log
命令
#!/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``
当我手动运行“开始”时,我收到以下电子邮件
TestLine
Total: 1 directory, 4 files, 0 symlinks
当我使用 cron 运行它时,我收到以下电子邮件
TestLine
crontab -e 的设置方法如下
@daily /root/start
知道为什么 cron 会从电子邮件中删除 lftp 输出吗?
答案1
cron 的运行环境与交互式 shell 不同。您的$HOSTNAME
变量未设置。
您可以在脚本开始时进行设置,如下所示:
HOSTNAME="`/usr/bin/hostname`"
答案2
我自己花了一些时间与这个问题作斗争。决定采用screen
。例如
screen -dmS screen_name bash -c '/root/start'
答案3
我遇到了同样的问题。从 cron 运行时,lftp 根本不输出该行,但它仍然完成其工作。