Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Bash脚本中使用;或;操作人员_Apache_Bash_Operators_Logrotate - Fatal编程技术网

Apache Bash脚本中使用;或;操作人员

Apache Bash脚本中使用;或;操作人员,apache,bash,operators,logrotate,Apache,Bash,Operators,Logrotate,我的apache默认logrotate脚本是: /var/log/httpd/*log { missingok notifempty sharedscripts postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } 我理解第6行的输出和错误重定向,但是有人能解释一下|true的用途吗?省略该位的潜在后果是什么?当log

我的apache默认logrotate脚本是:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

我理解第6行的输出和错误重定向,但是有人能解释一下
|true
的用途吗?省略该位的潜在后果是什么?

logrotate
实用程序运行
postrotate
(或
prerotate
)脚本时,它会检查脚本返回的错误代码。特别是,当指定了
SharedScript
时,错误处理如下所示(引用自
man logrotate
,重点添加):

共享脚本

通常,对每个旋转的日志运行预旋转和后旋转脚本,并将日志文件的绝对路径作为第一个参数传递给脚本。这意味着对于匹配多个文件的日志文件条目(例如/var/log/news/*示例),可以多次运行单个脚本。如果指定了SharedScript,则脚本只运行一次,而不管有多少日志与通配符模式匹配,整个模式都将传递给它们。但是,如果模式中的所有日志都不需要旋转,那么脚本将根本不会运行如果脚本退出时出错,则不会对任何日志执行其余操作。此选项覆盖nosharedscripts选项,并暗示创建选项

| | true
防止
http reload
命令返回错误条件,从而避免上述情况

manbash
(在“列表”部分)描述了
|

command1 | | command2

当且仅当
command1
返回非零退出状态时,才会执行
command2
。AND和OR lists的返回状态是在列表中执行的最后一个命令的退出状态

man-true
详细解释了
true
,但我认为标题足够:“什么都不做,成功”


简而言之,
command1 | | true
首先执行
command1
。如果成功了,结果就是成功。否则,它将执行
true
,不成功执行任何操作,从而成功。因此,当
logrotate
实用程序运行
postrotate
(或
prerotate
)脚本时,它总是执行
command1
,并且总是成功。特别是,当指定了
SharedScript
时,错误处理如下所示(引用自
man logrotate
,重点添加):

共享脚本

通常,对每个旋转的日志运行预旋转和后旋转脚本,并将日志文件的绝对路径作为第一个参数传递给脚本。这意味着对于匹配多个文件的日志文件条目(例如/var/log/news/*示例),可以多次运行单个脚本。如果指定了SharedScript,则脚本只运行一次,而不管有多少日志与通配符模式匹配,整个模式都将传递给它们。但是,如果模式中的所有日志都不需要旋转,那么脚本将根本不会运行如果脚本退出时出错,则不会对任何日志执行其余操作。此选项覆盖nosharedscripts选项,并暗示创建选项

| | true
防止
http reload
命令返回错误条件,从而避免上述情况

manbash
(在“列表”部分)描述了
|

command1 | | command2

当且仅当
command1
返回非零退出状态时,才会执行
command2
。AND和OR lists的返回状态是在列表中执行的最后一个命令的退出状态

man-true
详细解释了
true
,但我认为标题足够:“什么都不做,成功”


简而言之,
command1 | | true
首先执行
command1
。如果成功了,结果就是成功。否则,它将执行
true
,不成功执行任何操作,从而成功。因此,当
logrotate
实用程序运行
postrotate
(或
prerotate
)脚本时,它总是执行
command1
,并且总是成功。特别是,当指定了
SharedScript
时,错误处理如下所示(引用自
man logrotate
,重点添加):

共享脚本

通常,对每个旋转的日志运行预旋转和后旋转脚本,并将日志文件的绝对路径作为第一个参数传递给脚本。这意味着对于匹配多个文件的日志文件条目(例如/var/log/news/*示例),可以多次运行单个脚本。如果指定了SharedScript,则脚本只运行一次,而不管有多少日志与通配符模式匹配,整个模式都将传递给它们。但是,如果模式中的所有日志都不需要旋转,那么脚本将根本不会运行如果脚本退出时出错,则不会对任何日志执行其余操作。此选项覆盖nosharedscripts选项,并暗示创建选项

| | true
防止
http reload
命令返回错误条件,从而避免上述情况

manbash
(在“列表”部分)描述了
|

command1 | | command2

当且仅当
command1
返回非零退出状态时,才会执行
command2
。AND和OR lists的返回状态是在列表中执行的最后一个命令的退出状态

man-true
详细解释了
true
,但我认为标题足够:“什么都不做,成功”

简而言之,
command1 | | true
first-ex