![如何将 exec 命令的输出重定向到 monit 日志?](https://linux22.com/image/628327/%E5%A6%82%E4%BD%95%E5%B0%86%20exec%20%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20monit%20%E6%97%A5%E5%BF%97%EF%BC%9F.png)
是否可以将 exec 命令的输出重定向到 monit 日志?
check host example.org with address example.org
if failed port 80 protocol http for 2 cycles then
exec "/root/cloudflare.py >> /var/log/monit.log"
这似乎不起作用:
[EST Mar 6 16:02:19] error : 'example.org' failed, cannot open a connection to INET[example.org:80] via TCP
[EST Mar 6 16:02:24] info : 'example.org' exec: /root/cloudflare.py
[EST Mar 6 16:02:24] error : 'nginx' process is not running
[EST Mar 6 16:02:24] info : 'nginx' trying to restart
[EST Mar 6 16:02:24] info : 'nginx' start: /etc/init.d/nginx
[EST Mar 6 16:02:24] error : monit: Error reading pid from file '/var/run/nginx.pid'
如您所见,它记录了它调用了脚本,并且脚本确实执行了预期的操作,但定向输出未捕获到日志中。当然,如果我从命令行运行,它会捕获到。
两个进程尝试附加到同一个日志是否存在问题?或者这对于 monit exec 来说是否太多了?
答案1
如果 monit 使用标准 syslog 工具,则查看记录器。您可以通过它来传输命令的输出,每行都会作为新消息出现在相关的日志文件中,例如
echo "Hello Sweetie" | logger
将日志消息放入我手头的 CentOS 系统上的 /var/log/messages 中。我不使用 monit,但弄清楚如何将消息定向到相关日志应该相当简单。