2016-10-26 24 views
0

Можно ли это объяснить:вращение журнала Nginx

[ ! -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 не работает, и мы не можем отправить сигнал мастер-процессу?

ответ

1

Оба оператора выполняют ту же функцию, но имеют разные коды выхода.

[ ! condition ] || action 
[ condition ] && action 

Оба заявления выполняют действие только если условие верно. Единственным альтернативом является не выполнить действие, когда условие является ложным.

Если условие истинно, код выхода всего заявления является выход код действия.

Это условие , если false, что код выхода двух операторов отличается, потому что это код выхода элемента [ ... ].