我设置了一个运行脚本的cron,这个脚本将运行一个更新加密的命令。
#!/bin/bash
/usr/local/sbin/certbot-auto renew --renew-hook "service nginx reload" -q >> /var/log/certbot-renew.log | mail -s "CERTBOT Renewals" test@test.com < /var/log/certbot-renew.log
exit 0
每次cron运行时都会生成一封电子邮件,但我想要的是发送错误/续订以发送电子邮件。我已经读过,如果我使用&>
这会写错误,如果我用>>
替换&>
或者我应该使用2>&1
来捕获stdout和stderr吗?
答案 0 :(得分:1)
在此命令
上command >>file 2>&1 | other command
输出被重定向到文件>>
,然后重定向到管道,tee可以复制输出。
command 2>&1 | tee -a file | other command
否则一些shell接受&>>
将stdout和stderr重定向到追加模式的文件。
以下命令执行相同操作,顺序很重要(fd1重定向到文件,fd2重定向到fd1)
command >>file 2>&1