「nginx实践指南」命令备忘录
这是「nginx实践指南印刷top gear系列」的命令备忘录。
环境是CentOS7。
在systemctl中的操作
-
- 開始
systemctl start nginx
nginxを開始します。
終了
systemctl stop nginx
nginxを停止します。
再起動
systemctl restart nginx
nginxを再起動します。一度nginxを停止させるため、リクエストを受け付けできない時間が一瞬発生します。
設定の再読み込み
systemctl reload nginx
設定を再度読み込みます。新たなworkerプロセスを新たな設定で起動してから、古い設定のworkerプロセスでリクエスト処理中でないものを順次終了させるため、リクエストを受け付けできない時間が発生しません。
バイナリ入れ替え
/sbin/service nginx upgrade
nginxを再起動します。これはバイナリ入れ替え時のためのコマンドで、新たなmaster/workerプロセスを、新たなバイナリを使って起動してから、古いmaster/workerプロセスでリクエスト処理中でないものを順次終了させるため、リクエストを受け付けできない時間は発生しません。
パッケージのアップデート時に自動的に実行されます。
状態表示
systemctl status nginx
nginxがコンソールに出力したログや起動状態を表示します。デフォルトでは長い行が省略されますが、-lオプションを付けると表示されます。
停止的动作种类
通常情况下,等待处理完成后再结束被称为“正常停机(graceful shutdown)”,等待处理完成后重新启动被称为“正常重启(graceful restart)”。相反地,不等待处理完成而直接结束被称为“快速关机(fast shutdown)”或“强制关机(force shutdown)”。
可以把「systemctl stop nginx」和「systemctl restart nginx」归类为快速关闭,因为它们会中断正在处理中的请求。
要进行优雅的关闭,需要使用后面提到的信号或nginx命令。
使用nginx命令进行操作
如果不指定任何选项,nginx的守护程序将会启动。
通过信号发送进行操作
通过systemctl和nginx命令对nginx守护程序进行控制实际上是通过发送信号来实现的。
nginx守护程序分为主进程和工作进程,每个进程可以处理的信号有所不同。
在主进程中处理信号
在工作进程中处理信号
例如,systemctl stop nginx 会向主进程发送QUIT和TERM信号。
而nginx -s reopen 则会向主进程发送USR1信号。
然而,信号和处理过程并不一定直观地对应,所以可以说systemctl和nginx命令更直观易操作。
在信号处理中的示例方式。
# ps aux | grep nginx
root 3575 0.0 0.0 46364 964 ? Ss 08:29 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 3576 0.0 0.1 46764 1924 ? S 08:29 0:00 nginx: worker process
root 3584 0.0 0.0 112660 972 pts/1 R+ 08:55 0:00 grep --color=auto nginx`
# kill -QUIT 3575
# ps aux | grep nginx
root 3589 0.0 0.0 112660 976 pts/1 S+ 08:56 0:00 grep --color=auto nginx