我发现这段代码在/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的有这个的目的是什么? 它覆盖我的防火墙规则。 我可以安全地删除此cron作业?
我发现这段代码在/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的有这个的目的是什么? 它覆盖我的防火墙规则。 我可以安全地删除此cron作业?
>> /dev/null
重定向标准输出( stdout
)到/dev/null
,这将其丢弃。
(该>>
似乎有点多余,因为>>
表示追加,而>
表示截断和写入,并要么追加或写/dev/null
具有相同的净效应。我通常只是用>
出于这个原因。)
2>&1
重定向标准误差( 2
)到标准输出( 1
),然后将其丢弃,以及因为标准输出已经被重定向。
让我们打破>> /dev/null 2>&1
语句转换成部分:
第1部分: >>
输出重定向
这是用来重定向程序输出并在该文件的末尾的输出追加。 更多...
第2部分: /dev/null
特殊文件
这是一个伪设备特殊文件 。
命令ls -l /dev/null
会给你这个文件的详细信息:
crw-rw-rw-. 1 root root 1, 3 Mar 20 18:37 /dev/null
你观察crw
? 这意味着它是一个伪设备文件这是字符专用文件 ,它提供串行访问类型。
/dev/null
接受并丢弃所有输入; 不产生输出(总是返回上一个读的结束文件指示)。 参考: 维基百科
第3部分: 2>&1
文件描述符
当你执行一个程序,操作系统始终打开三个文件STDIN
, STDOUT
和STDERR
,因为我们知道,每当打开一个文件时,操作系统(从内核 )返回一个称为文件描述符的非负整数。 这些文件的文件描述符是0,1,2分别。
所以2>&1
只是说重定向STDERR
到STDOUT
&
任何如下的手段是文件描述符,而不是文件名。
总之,通过使用该命令你告诉你的程序不是在执行喊。
什么是使用的重要性2>&1
?
如果你想制作即使在终端产生了一些错误的情况下,没有输出。 为了解释清楚,让我们看看下面的例子:
$ ls -l > /dev/null
对于上述命令,没有输出被印在终端上,但如果该命令产生一个错误:
$ ls -l file_doesnot_exists > /dev/null
ls: cannot access file_doesnot_exists: No such file or directory
尽管我输出重定向到/dev/null
,它被印刷在终端中。 这是因为我们没有重定向错误输出到/dev/null
,所以为了重定向错误输出,以及,需要添加2>&1
$ ls -l file_doesnot_exists > /dev/null 2>&1
这是悄悄执行程序,并隐藏了所有的输出方式。
/dev/null
是一个特殊的文件系统对象,扔掉一切都写了进去。 重定向流引入这意味着隐藏的输出。
的2>&1
部分是指“重定向两者的输出和错误流”。 即使你的程序写入stderr
,该输出将不会显示。
/dev/null
-它放弃所有你写它的标准文件,但有报道说写操作成功。 1
是stdout和2
是标准错误。 2>&1
重定向标准错误到stdout。 &1
表示文件描述符(标准输出),否则(如果你只使用1
),你会重定向错误输出到文件名为1
。 [any command] >>/dev/null 2>&1
重定向所有错误输出到标准输出,并且所有的写入到/dev/null
。
我用>> /dev/null 2>&1
无声的cronjob,的cronjob会做的工作,但不发送报告给我的电子邮件。
据我所知,不删除/dev/null
,这尤其是当你运行的cPanel有用,可以用于扔掉的cronjob报告。
如由其他人所描述的,写入到/ dev / null的消除的程序的输出。 通常的cron将开始与一个cronjob从过程的每一个输出的电子邮件。 因此,通过写输出到/ dev / null的,如果你指定在cron你ADRESS您防止被垃圾邮件。
编辑/etc/conf.apf
。 设置DEVEL_MODE="0"
DEVEL_MODE
设置为1
会增加一个cron作业5分钟后停止APF。