Bash 脚本在屏幕上的输出也保存到日志文件中

Bash 脚本在屏幕上的输出也保存到日志文件中

我创建了一个执行 curl 命令的简单脚本(我每个月通过 crontab 运行它),并让它回显到日志文件,其中包含运行日期。问题是我想将 shell 脚本输出也接收到日志文件中,我非常确定如何实现这一点。这就是我所拥有的:

#!/bin/bash
#
LOGFILE=/root/Delete-Old-Indices.log
#Nginx Logs - Delete older than 90 Days
curl -XDELETE XXXXXXXXXXXXXXXXXX
echo "$(date "+%d%m%Y %T") : Starting work" >> $LOGFILE 2>&1

所以现在我的日志文件中只收到以下一行日志:“日期+时间:开始工作”,并且我的日志文件中没有收到 shell 脚本输出,我只能在我的 shell 窗口中看到它。

谢谢

答案1

您可以按照对命令执行的方式将任何输出重定向到日志文件echo,即使用>>重定向符号。

这将导致屏幕上不再显示任何输出。如果您还希望查看输出,可以使用或tee选项,如-a--append

curl -XDELETE XXXXXXXXXXXXXXXXXX | tee -a $LOGFILE

这会将两者都重定向到文件(附加到已经存在的内容)和屏幕。

如果您想要将脚本的所有输出收集到日志文件中,那么只需在调用 shell 脚本时重定向输出即可。在脚本本身中,您可以删除所有重定向。

相关内容