我正在学习bash脚本。我正在尝试编写一个简单的脚本,使用 crontab 定期运行apt-get update
进行调度。我试图将错误(发生错误的时间)发送到日志文件,但我只得到错误而不是时间,
脚本文件
echo "---------- $(date +"%d %B %G") , $(date +%r) :";
apt-get update;
crontab文件(sudo crontab -e)
0 */5 * * * /root/scripts/update_sys.sh 2>/root/logs/updateLog 1>/dev/null
据我所知,脚本文件中的echo语句将文本转储到标准输出,因此它最终在/dev/null
,但是如何将其包含在日志文件中而不是整个info (我的意思是apt-get
转储如Hit http://in.archive.ubuntu.com precise-backports/main Sources
)的信息?
答案 0 :(得分:2)
如果您可以修改脚本而不是crontab
,那么最简单的方法是将脚本中的回波重定向到stderr
。
echo "---------- $(date +"%d %B %G") , $(date +%r) :" >&2
所有stdout
仍会转到/dev/null
,所有stderr
都会与回声一同记录到stderr
。
如果你可以修改crontab
但不修改脚本,那么最简单的就是devnull的建议。
如果您可以修改,那么您可以选择。