61

nginx在 OS X 10.8 上使用。新安装nginx但找不到重启 nginx 的方法,除了kill nginx_pidkill 64116. 想知道有没有更好的重启方法nginx

在 Google 和 SO 上找到了一些方法,但没有奏效:

nginx -s restart

sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart

的错误消息nginx -s restart

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

有时也会收到此错误消息:

nginx: invalid option: "-s restart"
4

13 回答 13

111

sudo nginx在启动 nginx 之前尝试运行。

于 2014-01-30T10:45:06.550 回答
27

要重新加载配置文件:

sudo nginx -s reload

完全重启nginx

sudo nginx -s quit
sudo nginx

细节

nginx没有restart信号。从文档中,这里是主进程接受的信号:

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.

大概您可以手动将这些信号发送到进程 ID,但该命令具有为您发送信号到主进程nginx的标志。nginx -s <signal>您的选择是:

stop    SIGTERM
quit    SIGQUIT
reopen  SIGUSR1
reload  SIGHUP

无需手动使用 pid。


编辑:刚刚意识到大部分信息已经在其他答案的评论中。无论如何都要在这里总结一下情况。

于 2014-06-25T21:02:47.747 回答
19

What is your nginx pid file location? This is specified in the configuration file, default paths specified compile-time in the config script. You can search for it as such:

find / -name nginx.pid 2>/dev/null (must issue while nginx is running)

Solution:

sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid
于 2013-01-05T23:11:24.027 回答
8
$ sudo nginx -c /usr/local/etc/nginx/nginx.conf
$ sudo nginx -s reload

来源链接:https ://blog.csdn.net/github_33644920/article/details/51733436

于 2019-10-17T09:59:02.580 回答
6

尝试这个:

sudo nginx -s stop

其次是:

sudo nginx

似乎 nginx 会跟踪它的状态,如果你停止它两次,它会抱怨。但以上对我有用。

于 2017-07-02T18:36:45.697 回答
5

我这样做:

先杀进度

ps aux | grep nginx
kill -9 {pid}

然后启动nginx

nginx

有用!

于 2015-10-28T08:33:42.583 回答
3

作为未来的资源,可以参考http://wiki.nginx.org/CommandLine

Nginx可能以 root 身份运行,因此您需要运行以下命令的变体来影响它。

sudo nginx -s stop | reload | quit | reopen

通常没有太多理由NginxApache需要的那样重新启动。如果您修改了配置文件,您可能只想重新加载选项。

于 2014-08-14T15:18:32.290 回答
2

检查此目录是否存在:

/usr/local/var/run

当 nginx 尝试在不存在的本地化中初始化 pid 文件时,可能会发生此错误。

于 2015-02-01T14:07:45.600 回答
1

要重新加载自定义配置文件,请使用

nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
于 2015-03-19T17:39:37.667 回答
1

这里有一个错误。根据您修改/重新启动 apache 和/或修改 nginx 配置时 nginx 是否正在运行,这个文件(本质上只是一个进程 ID 指针)可能会被破坏。

当您尝试向 nginx 发送任何信号时

nginx -s quit;
nginx -s stop;
nginx -s reload;

nginx 使用这个文件来引用它需要向其发送信号的进程的 ID。如果文件不存在,则 nginx 的活动运行进程和 cli 应用程序之间的链接实际上被破坏了。

实际上,我最终处于两个 nginx 进程同时运行的状态,因此两个进程都被杀死了。

要解决此问题,您可以通过活动监视器强制终止现有的 nginx 进程(然后运行 ​​nginx 并让 cli 应用程序创建一个新的 nginx.pid 文件),或者如果您确实需要保持 nginx 运行但想要运行 nginx - s reload - 在 /run 路径中手动创建一个名为 nginx.pid 的文件,并插入当前正在运行的 nginx 进程的 PID(通过 Activity Monitor 获得)。

于 2015-02-27T15:47:12.720 回答
1

这可能只是意味着 nginx 已经停止 - 目前没有运行。
首先确认nginx是否在运行,执行:

$ ps aux | grep nginx
于 2015-10-19T02:04:23.750 回答
1

我得到了相同的错误链接,我尝试了很多方法来修复它,但在我运行命令行之后它不起作用,它运行良好:nginx -c /usr/local/etc/nginx/nginx.conf

我从这里得到的信息 https://blog.csdn.net/wn1245343496/article/details/77974756

于 2018-06-26T05:18:14.177 回答
0

停止或重新加载的一种方法是通过以下命令,

对于停止:

sudo /usr/local/nginx/sbin/nginx -s stop 

仅当 nginx 正在运行时才运行 reload:

sudo /usr/local/nginx/sbin/nginx -s reload

通过像上面那样做,你不会得到 nginx: [error] open() "/usr/local/var/run/nginx.pid" 这个问题

于 2016-08-26T19:04:29.180 回答