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


person Vishnu    schedule 26.10.2016    source источник


Ответы (1)


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

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

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

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

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

person Richard Smith    schedule 26.10.2016