演示(或直接到实际问题部分)
我有一个用来扫描服务器的赖尼斯脚本。演示这个脚本并不重要,但下面是脚本:https://gitlab.com/sofibox/maxicron/-/blob/master/usr/local/maxicron/lynis/maxinis
此脚本运行良好,在通过终端手动运行时不会输出任何错误:
./maxinis manual --cronjob我也会收到一封关于扫描的电子邮件。
但是,当我在特定的时间通过cronjob运行这个脚本时,如下所示:
06 21 * * * root /usr/local/maxicron/lynis/maxinis cron --cronjob > /dev/null它也运行得很好,发送了一封电子邮件,但我收到了一封来自Cron Daemon的额外电子邮件,其中有3条警告输出,如下所示:

我的问题是,根据上面图片中的3条警告消息,我收到了cron守护进程电子邮件警告。如何抑制警告的第二行并保留Cron Daemon发送的其余输出?
输出的第二行是:
# Warning: iptables-legacy tables present, use iptables-legacy to see them我尝试在crontab中使用这样的grep -v方法,但似乎不起作用:
06 21 * * * root /usr/local/maxicron/lynis/maxinis cron --cronjob > /dev/null | grep -v '# Warning: iptables-legacy tables present, use iptables-legacy to see them' 发布于 2020-07-30 15:46:32
grep不起作用的原因是消息将发送给stderr,而不是stdout,因此grep永远不会看到它们。这就是为什么即使在将stdout发送到/dev/null之后也会收到电子邮件的原因。您可以像这样过滤stderr:
somecommand > /dev/null 2>( grep -v 'unwanted error' 1>&2 )https://unix.stackexchange.com/questions/601097
复制相似问题