我在/etc/cron.daily/apf中找到了这段代码

#!/bin/bash  
/etc/apf/apf -f >> /dev/null 2>&1  
/etc/apf/apf -s >> /dev/null 2>&1  

它正在刷新并重新加载防火墙。 我不明白>> /dev/null 2>&1部分。

在监狱里放这个有什么用?它覆盖了我的防火墙规则。 我可以安全地删除这个cron作业吗?


当前回答

这是安静地执行程序并隐藏其所有输出的方法。

/dev/null是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。将流重定向到它意味着隐藏程序的输出。

2>&1部分表示“将错误流重定向到输出流”,因此当您重定向输出流时,错误流也会被重定向。即使您的程序现在写入stderr,输出也会被丢弃。

其他回答

让我一点一点地解释。

0,

0: standard input
1: standard output
2: standard error

>>

>>命令>> /dev/null 2>&1将回显信息追加到/dev/null

命令>> /dev/null 2>&1

后命令:

command
=> 1 output on the terminal screen
=> 2 output on the terminal screen

后重定向:

command >> /dev/null
=> 1 output to /dev/null
=> 2 output on the terminal screen

/dev/null 2>&1

command >> /dev/null 2>&1
=> 1 output to /dev/null
=> 2 output is redirected to 1 which is now to /dev/null

这是安静地执行程序并隐藏其所有输出的方法。

/dev/null是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。将流重定向到它意味着隐藏程序的输出。

2>&1部分表示“将错误流重定向到输出流”,因此当您重定向输出流时,错误流也会被重定向。即使您的程序现在写入stderr,输出也会被丢弃。

我通常在日志文件中使用该命令,目的是在多个服务器上同时运行脚本时捕捉任何错误以评估/排除问题。

sh -vxe cmd > cmd.logfile 2>&1

>> /dev/null将标准输出(stdout)重定向到/dev/null,该输出将丢弃它。

(>>似乎有点多余,因为>>意味着追加,而>意味着截断和写入,无论是追加到/dev/null还是写入到/dev/null都具有相同的净效果。出于这个原因,我通常只使用>。)

2>&1将标准错误(2)重定向到标准输出(1),标准输出(1)也会丢弃它,因为标准输出已经被重定向了。

我使用>> /dev/null 2>&1静默cronjob。cronjob可以做这项工作,但不会把报告发送到我的电子邮件。

据我所知,不要删除/dev/null.它很有用,特别是当你运行cPanel时,它可以用于丢弃cronjob报告。