如何将stderr重定向到一个文件和一些回声(不是stdout)到同一个文件

时间:2013-12-29 14:56:47

标签: linux bash shell

我正在学习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)的信息?

1 个答案:

答案 0 :(得分:2)

如果您可以修改脚本而不是crontab,那么最简单的方法是将脚本中的回波重定向到stderr

echo "----------   $(date +"%d %B %G") , $(date +%r) :" >&2

所有stdout仍会转到/dev/null,所有stderr都会与回声一同记录到stderr

如果你可以修改crontab但不修改脚本,那么最简单的就是devnull的建议。

如果您可以修改,那么您可以选择。