OS X 10.8でnginx
を使用しています。新たにインストールされたnginx
が、kill nginx_pid
say kill 64116
以外のnginxを再起動する方法を見つけることができません。 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"
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
Nginxを起動する前にSudo nginx
を実行してみてください。
設定ファイルをリロードするには:
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を手動で変更する必要はありません。
編集:この情報の多くは、他の回答のコメントに既にあることに気付いた。とにかくこれを残して状況を要約します。
私はこのようにします:
最初に進捗を殺す
ps aux | grep nginx
kill -9 {pid}
次に、nginxを起動します
nginx
できます!
将来のリソースとして、 http://wiki.nginx.org/CommandLine を参照できます
Nginx
はおそらくルートとして実行されるので、それに影響を与えるために次のコマンドのバリアントを実行する必要があります。
Sudo nginx -s stop | reload | quit | reopen
通常、Nginx
が必要とするようなApache
を再起動する理由はあまりありません。構成ファイルを変更した場合は、リロードオプションのみを使用できます。
これは単に、nginxが既に停止していることを意味する可能性があります-現時点では実行されていません。
まず、nginxが実行されているかどうかを確認し、次を実行します。
$ ps aux | grep nginx
これを試して:
Sudo nginx -s stop
続いて:
Sudo nginx
Nginxはその状態を追跡しているようで、2回停止すると文句を言います。しかし、上記は私のために働いた。
このディレクトリが存在するかどうかを確認します。
/usr/local/var/run
このエラーは、nginxが存在しないローカリゼーションでpidファイルを初期化しようとしたときに発生する可能性があります。
私はあなたと同じエラーリンクを得ました、それを修正するために多くの方法を試しましたが、その後コマンドラインを実行するとうまくいきません:nginx -c /usr/local/etc/nginx/nginx.conf
ここから得た情報 https://blog.csdn.net/wn1245343496/article/details/77974756
ここにバグがあります。 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を実行する必要がある場合- s reload-nginx.pidという名前の/ runパスにファイルを手動で作成し、現在実行中のnginxプロセス(Activity Monitorで取得)のPIDを挿入します。
カスタム設定ファイルをリロードするには
nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
停止またはリロードする1つの方法は、以下のコマンドを使用することです。
停止する場合:
Sudo /usr/local/nginx/sbin/nginx -s stop
Nginxが実行されている場合にのみリロードを実行します。
Sudo /usr/local/nginx/sbin/nginx -s reload
上記のようにすることで、nginxを取得できなくなります:[error] open() "/usr/local/var/run/nginx.pid"この問題