将输出保存到 crontab 中的多个文件中

将输出保存到 crontab 中的多个文件中

crontab 中有一个计划的脚本。

0 2 * * * /usr/local/bin/backup.sh >> /root/output_all.txt

我想同时将输出保存到多个文件中,例如output_all.txt和output_date.txt。

我知道有tee命令将输出保存到多个文件。
tee只有tty存在时才能使用?

还有其他解决办法吗?

答案1

使用tee作品没有任何问题。tty只是用于与操作系统交互的设备,位于/dev/tty#

0 2 * * * /usr/local/bin/backup.sh | tee /root/output_all.txt output_date.txt 

如果您希望它将输出附加到文件并且不覆盖现有内容:

0 2 * * * /usr/local/bin/backup.sh | tee -a /root/output_all.txt output_date.txt

请记住,上述方法将发送到 stdout 和文件,并向 cron 用户发送电子邮件。

答案2

该过程通常不知道它是通过 cron 会话运行还是通过终端连接会话运行,因此您的问题应该只是:“将输出保存到多个文件”,它实际上是更简单的方面:用于tee将标准输出分叉到一个或更多文件,不要忘记剩余的输出sendmail默认情况下会转到。如果您不希望非托管邮箱不断增长,请考虑使用管道,这是一个懒惰的选项,比根据您喜欢的语法设置后|& logger消失更好。&>/dev/nullSHELL=/bin/bash

这让我们回到了您所犯的错误:仅缺少 cron 启动的进程stdin(例如,它存在但无效/dev/null),$DISPLAY以及您直观地理解为参与用户界面的其他桌面特定资源,包括需要活动用户的加密代理会议 ;尝试只安排不需要用户交互的任务。

说真的,对于 cronjobs,值得配置邮件路由,因为所有剩余的输出都会路由到邮件而不是终端。就这样。

相关内容