61

OSX10.8で使用nginxしています。新しくインストールされましたが、言うnginx以外にnginxを再起動する方法が見つかりません。再起動するためのより良い方法があるかどうか疑問に思います。kill nginx_pidkill 64116nginx

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 nginxnginxを開始する前に実行してみてください。

于 2014-01-30T10:45:06.550 に答える
27

設定ファイルをリロードするには:

sudo nginx -s reload

完全に再起動するにはnginx

sudo nginx -s quit
sudo nginx

詳細

restartnginxのシグナルはありません。ドキュメントから、マスタープロセスが受け入れるシグナルは次のとおりです。

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

nginx pidファイルの場所は何ですか?これは構成ファイルで指定され、デフォルトのパスは構成スクリプトでコンパイル時に指定されます。あなたはそれをそのように検索することができます:

find / -name nginx.pid 2>/dev/null(nginxの実行中に発行する必要があります)

解決:

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はその状態を追跡しているようです。2回停止すると文句を言います。しかし、上記は私のために働いた。

于 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

Nginx通常、Apache必要に応じて再起動する理由はあまりありません。構成ファイルを変更した場合は、リロードオプションが必要になる場合があります。

于 2014-08-14T15:18:32.290 に答える
2

このディレクトリが存在するかどうかを確認します。

/usr/local/var/run

このエラーは、nginxが存在しないローカリゼーションでpidファイルを初期化しようとしたときに発生する可能性があります。

于 2015-02-01T14:07:45.600 に答える
1

ここにバグがあります。Apacheの変更/再起動および/またはnginx構成の変更中に、nginxが実行されているかどうかによっては、このファイル(基本的には単なるプロセスIDポインター)が破棄される可能性があります。

次のような信号をnginxに送信しようとすると

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

nginxはこのファイルを使用して、シグナルの送信先となるプロセスのIDを参照します。ファイルが存在しない場合、nginxのアクティブな実行中のプロセスとCLIアプリの間のリンクが事実上壊れています。

私は実際に2つのnginxプロセスが同時に実行されている状態になってしまったので、両方を強制終了しました。

これを回避するには、Activity Monitorを介して既存のnginxプロセスを強制的に終了するか(次にnginxを実行してcliアプリに新しいnginx.pidファイルを作成させる)、または本当にnginxを実行し続ける必要があるが、nginxを実行したい場合は- ■reload-nginx.pidというファイルを/runパスに手動で作成し、現在実行中のnginxプロセスのPIDを挿入します(Activity Monitorから取得)。

于 2015-02-27T15:47:12.720 に答える
1

カスタム設定ファイルをリロードするには、

nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
于 2015-03-19T17:39:37.667 に答える
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

停止またはリロードする1つの方法は、以下のコマンドを使用することです。

停止の場合:

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

nginxが実行されている場合にのみリロードを実行します。

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

上記のようにすることで、nginxを取得できません:[エラー] open()"/usr/local/var/run/nginx.pid"この問題

于 2016-08-26T19:04:29.180 に答える