可以解释一下:
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
(/etc/logrotate.d/nginx的内容)?
为什么这不是
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
因为只有当nginx.pid文件存在时我们才应该发送信号吗?如果pid不存在,那么nginx没有运行,我们无法向主进程发送信号?
答案 0 :(得分:1)
两个语句执行相同的功能,但具有不同的退出代码。
[ ! condition ] || action
[ condition ] && action
仅当 condition 为true时,两个语句才执行 action 。当条件为false时,唯一的选择是不执行操作。
如果 condition 为true,则整个语句的退出代码是 action 的退出代码。
当 condition 为false时,两个语句的退出代码不同,因为它是[ ... ]
元素的退出代码。