nginx 的启动、停止与重启 nginx进程杀死后pid丢

sudo vim nginx.conf

详解

./nginx  #打开 nginx
nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
nginx -t   #测试配置是否有语法错误

nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]

-?,-h           : 打开帮助信息
-v              : 显示版本信息并退出
-V              : 显示版本和配置选项信息,然后退出
-t              : 检测配置文件是否有语法错误,然后退出
-q              : 在检测配置文件期间屏蔽非错误信息
-s signal       : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix       : 设置前缀路径(默认是:/usr/local/nginx/)
-c filename     : 设置配置文件(默认是:/usr/local/nginx/conf/nginx.conf)
-g directives   : 设置配置文件外的全局指令
-s signal      Send a signal to the master process.  The argument signal can be one of: stop, quit, reopen, reload.
                    The following table shows the corresponding system signals:

                    stop    SIGTERM
                    quit    SIGQUIT
                    reopen  SIGUSR1
                    reload  SIGHUP

SIGNALS
     The master process of nginx can handle the following signals:

     SIGINT, SIGTERM  Shut down quickly.
     SIGHUP           Reload configuration, start the new worker process with a new configuration, and gracefully shut
                      down old worker processes.
     SIGQUIT          Shut down gracefully.
     SIGUSR1          Reopen log files.
     SIGUSR2          Upgrade the nginx executable on the fly.
     SIGWINCH         Shut down worker processes gracefully.

停止

查看进程号:

$ ps -ef|grep nginx
root      5747     1  0 May23 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
     12037  7886  0 10:00 pts/1    00:00:00 grep nginx
nobody   25581  5747  0 Sep27 ?        00:01:16 nginx: worker process      
nobody   25582  5747  0 Sep27 ?        00:01:25 nginx: worker process      
nobody   25583  5747  0 Sep27 ?        00:02:59 nginx: worker process      
nobody   25584  5747  0 Sep27 ?        00:02:05 nginx: worker process

杀死进程:

$ kill -9 5747

重启

1. 验证nginx配置文件是否正确
进入nginx安装目录sbin下,输入命令:
$ ./nginx -t
…… nginx.conf syntax is ok
…… nginx.conf test is successful
看到如上显示,说明配置文件正确!

2. 重启nginx服务

进入nginx安装目录sbin下,输入命令:
 ./nginx -s reload
或者
 kill -HUP 5747

进程性的 nginx -s stop后再次启动nginx -s reload ,总是会报错误nginx: [error] open() “/alidata/server/nginx/logs/nginx.pid” failed (2: No such file or directory)。
原因:nginx进程杀死后pid丢失了,下一次再开启nginx -s reload时无法启动,重装可以解决问题,做不做,你决定吧,哈哈。

还是英文的解释比较专业:

issued a nginx -s stop and after that I got this error when trying to reload it.
[error]: invalid PID number “” in “/var/run/nginx.pid”
That /var/run/nginx/pid file is empty atm.
What do I need to do to fix it?

nginx -s reload is only used to tell a running nginx process to reload its config. After a stop, you don’t have a running nginx process to send a signal to. Just run nginx (possibly with a -c /path/to/config/file)

使用方法:

nginx -c /path/to/config/file

例子  /alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf
或者 sudo  /data/tengine/sbin/nginx -c /data/tengine/conf/nginx.conf

2. 启动nginx服务

nginx -t -c /usr/nginx/conf/nginx.conf 
或者
/usr/nginx/sbin/nginx -t 

nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

启动操作 -c参数指定了要加载的nginx配置文件路径

nginx -c /usr/local/nginx/conf/nginx.conf
停止操作
nginx -s stop :快速停止nginx
quit :完整有序的停止nginx

步骤1:查询nginx主进程号

ps -ef | grep nginx
在进程列表里 面找master进程,它的编号就是主进程号了。

发布了55 篇原创文章 · 获赞 12 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/mrzhangdulin/article/details/93485663