当logrotate
实用程序运行postrotate
(或prerotate
)脚本时,它会检查脚本返回的错误代码。特别是,当sharedscripts
指定时,错误处理如下(引自man logrotate
,强调补充):
共享脚本
通常,为每个旋转的日志运行 prerotate 和 postrotate 脚本,并将日志文件的绝对路径作为第一个参数传递给脚本。这意味着单个脚本可以针对匹配多个文件的日志文件条目运行多次(例如 /var/log/news/* 示例)。如果指定了 sharedscripts,则脚本只运行一次,无论有多少日志匹配通配符模式,并将整个模式传递给它们。但是,如果模式中的任何日志都不需要轮换,则根本不会运行脚本。如果脚本因错误退出,则不会对任何日志执行其余操作。 此选项覆盖 nosharedscripts 选项并暗示创建选项。
|| true
防止http reload
命令返回错误条件,从而避免上述情况。
man bash
(在“列表”部分)描述||
:
command1 || command2
command2
当且仅当command1
返回非零退出状态时才执行。AND 和 OR 列表的返回状态是列表中执行的最后一个命令的退出状态。
man true
详细解释true
,但我认为标题就足够了:“什么都不做,成功”。
简而言之,command1 || true
首先执行command1
. 如果成功,结果就是成功。否则,它执行true
,什么也不成功,因此成功。所以它总是执行command1
并且总是成功