nginx的信号控制
参数 | 说明 |
---|---|
TERM, INT | Quick shutdown |
QUIT | Graceful shutdown (即等待请求结束后再关闭) |
HUP | 配置文件改变后,会开新的进程去读取新的配置文件,然后再优雅的关闭旧进程 |
USR1 | Reopen the log file 重读日志,在日志按月/日分割时有用 |
UER2 | Upgrade Executable on the fly 平滑的升级 |
WINCH | 优雅的关闭旧的进程(配合USR2来进行升级) |
HUP 使用方法:
ps aux | grep nginx
nginx 进程信息:
root 29449 0.0 0.0 20004 648 ? Ss 14:31 0:00 nginx: master process ./nginx
nobody 29450 0.0 0.0 20448 1244 ? S 14:31 0:00 nginx: worker process
root 30211 0.0 0.0 103264 848 pts/0 S+ 20:41 0:00 grep nginx
使用命令重读配置文件:(不会关闭nginx)
kill -HUP 29449
使用USR1切割日志
[root@localhost logs]# cd /usr/local/nginx/logs
[root@localhost logs]# ls
access.log error.log nginx.pid
access.log
就是nginx的默认日志文件,切割日志的时候,需要先对access.log
文件重命名,然后创建一个access.log
文件,使用USR1
命令进行重读日志文件。
ps: 当修改
access.log
的文件名后,(例如,我们修改为在文件名后加上日志切割日期:access.log.201804231900
),创建access.log
文件,如果不使用USR1命令进行更新,nginx依然会向access.log.201804231900
文件中写入日志,而不会向access.log
文件中写入。
因为在linux系统中,是将文件挂载在文件节点inode上面的,修改文件名,并没有修改其指向的inode节点。
我们先来看看nginx的日志文件:
[root@localhost nginx]# ll logs/
总用量 12
-rw-r--r--. 1 root root 1966 4月 23 19:07 access.log
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
打开浏览器,请求nginx服务器里面的资源,
打开浏览器,请求nginx服务器里面的资源
然后再查看日志文件:
[root@localhost nginx]# ll logs/
总用量 12
-rw-r--r--. 1 root root 3446 4月 23 19:07 access.log
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
如图,红框标记的,日志文件大小增加了:
现在,我们修改nginx的配置文件
access.log
为access.log.201804231900
,然后查看日志文件。
[root@localhost nginx]# mv ./logs/access.log ./logs/access.log.201804231900
[root@localhost nginx]# ll logs/
总用量 12
-rw-r--r--. 1 root root 3446 4月 23 19:07 access.log.201804231900
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
刷新浏览器,再次查看日志文件:
[root@localhost nginx]# ll logs/
总用量 16
-rw-r--r--. 1 root root 5111 4月 23 19:18 access.log.201804231900
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
修改日志文件名后查看日志
创建
access.log
文件:
[root@localhost nginx]# touch ./logs/access.log
[root@localhost nginx]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
创建access.lo`文件
查看日志文件:
[root@localhost nginx]# ll ./logs/
总用量 16
-rw-r--r--. 1 root root 0 4月 23 19:20 access.log
-rw-r--r--. 1 root root 5111 4月 23 19:18 access.log.201804231900
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
刷新浏览器,再次查看。我们会发现,增长的依然是access.log.201804231900
,日志文件并没写入access.log
。
[root@localhost nginx]# ll ./logs/
总用量 16
-rw-r--r--. 1 root root 0 4月 23 19:20 access.log
-rw-r--r--. 1 root root 5111 4月 23 19:18 access.log.201804231900
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
[root@localhost nginx]# ll ./logs/
总用量 16
-rw-r--r--. 1 root root 0 4月 23 19:20 access.log
-rw-r--r--. 1 root root 6591 4月 23 19:29 access.log.201804231900
-rw-r--r--. 1 root root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
如图所示,日志文件并没写入access.log
切换日志
找到文件进程ID,然后使用信号量,进行更新。
[root@localhost nginx]# ps aux| grep nginx
root 884 0.0 0.0 103260 840 pts/0 S+ 19:36 0:00 grep nginx
root 29449 0.0 0.0 20004 648 ? Ss Apr22 0:00 nginx: master process ./nginx
nobody 29450 0.0 0.0 20448 1544 ? S Apr22 0:00 nginx: worker process
[root@localhost nginx]# kill -USR1 29449
[root@localhost nginx]# kill -USR1 29449就是命令的使用方法,如果不想查找进程id,可以使用命令kill -USR1 './logs/nginx.pid',效果一样。
查看日志:
[root@localhost nginx]# kill -USR1 29449
[root@localhost nginx]# ll ./logs/
总用量 16
-rw-r--r--. 1 nobody root 0 4月 23 19:20 access.log
-rw-r--r--. 1 root root 6591 4月 23 19:29 access.log.201804231900
-rw-r--r--. 1 nobody root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
刷新浏览器,再次查看:
[root@localhost nginx]# ll ./logs/
总用量 20
-rw-r--r--. 1 nobody root 740 4月 23 19:38 access.log
-rw-r--r--. 1 root root 6591 4月 23 19:29 access.log.201804231900
-rw-r--r--. 1 nobody root 1939 4月 23 19:07 error.log
-rw-r--r--. 1 root root 6 4月 22 14:31 nginx.pid
日志重读成功
我们可以看出,access.log的文件大小在增加,而
access.log.201804231900
的文件大小并没有变化。说明日志切割成功。
网友评论