ホームページ > 運用・保守 > Nginx > nginx の再起動時に nginx.pid ファイルが失われた場合の対処方法

nginx の再起動時に nginx.pid ファイルが失われた場合の対処方法

王林
リリース: 2020-10-19 17:31:57
転載
5104 人が閲覧しました

nginx の再起動時に nginx.pid ファイルが失われた場合の対処方法

1. nginx の停止操作

(推奨チュートリアル: nginx チュートリアル)

停止操作は nginx を介して行われます。 process これは、シグナルを送信することで実現されます。具体的なエラー メッセージは次のとおりです:

[root@yoodb.com ~]# /usr/local/nginx/sbin/nginx -s reload
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
ログイン後にコピー

ステップ 1:

nginx のメイン プロセス番号をクエリします。コードは次のとおりです:

ps -ef | grep nginx
ログイン後にコピー

In プロセス リストでマスター プロセスを見つけます。その番号がメイン プロセス番号です。

ステップ 2:

Nginx を静かに停止する信号を送信します:

kill -QUIT 主进程号
ログイン後にコピー

Nginx をすぐに停止します:

kill -TERM 主进程号
ログイン後にコピー

Nginx を強制的に停止します。コードは次のとおりです:

pkill -9 nginx
ログイン後にコピー

さらに、pid ファイルの保存パスが nginx.conf で設定されている場合、ファイルには Nginx のメイン プロセス ID が保存されます。指定されていない場合は、次の場所に配置されます。 nginx ログ ディレクトリ。 pid ファイルを使用することで、最初に Nginx のメインプロセス番号を問い合わせる必要はなく、コマンドコードは次のとおりです:

kill -信号类型 ‘/usr/nginx/logs/nginx.pid’
ログイン後にコピー

2. nginx のスムーズな再起動

If 設定を変更した後、Nginx にシグナルを送信し、スムーズに再起動できます。

スムーズ リスタート コマンド コードは次のとおりです。

kill -HUP 住进称号或进程号文件路径
ログイン後にコピー

または

/usr/nginx/sbin/nginx -s reload
ログイン後にコピー

を使用します。構成ファイルを変更した後は、変更された構成ファイルが次のとおりであるかどうかを確認することをお勧めします。その後、Nginx でエラーが発生し、サーバーの安定動作に影響を与えました。 Nginx の設定が正しいかどうかを判断するコマンド コードは次のとおりです。

nginx -t -c /usr/nginx/conf/nginx.conf
ログイン後にコピー

または

/usr/nginx/sbin/nginx -t
ログイン後にコピー

3. nginx のスムーズなアップグレード

サーバーが実行されている Nginx を実行する必要がある モジュールをアップグレード、追加、または削除するときは、サーバーを停止して対応する変更を行う必要があるため、サーバーは一定期間サービスを停止します Nginx は、サーバーを停止せずにさまざまなアップグレード操作を実行できます。サーバーの動作に影響を与えることなく、サーバーを保護します。

ステップ 1:

Nginx プログラムをアップグレードする場合は、まず古いプログラム ファイルを新しいプログラムで置き換えます。コンパイルしてインストールした後、新しいプログラムは Nginx インストール ディレクトリに直接コンパイルされます。 。

ステップ 2: コマンド

kill -USR2 旧版程序的主进程号或进程文件名
ログイン後にコピー
を実行します。

この時点で、古い Nginx メイン プロセスはプロセス ファイルの名前を .oldbin に変更し、新しいバージョンの Nginx を実行します。新しい Nginx と古い Nginx が一緒に実行されてリクエストを処理します。

現時点では、古いバージョンの Nginx を段階的に停止する必要があります。コマンドを入力してください:

kill -WINCH 旧版主进程号
ログイン後にコピー

タスクが完了すると、古い作業プロセスが終了し、新しいバージョンの Nginx が実行されます。 Nginx の作業プロセスは、古いバージョンの作業プロセスに徐々に置き換えられます。

新しいバージョンを使用するか、古いバージョンに戻すかを決定できます。

4. 設定に負荷をかけすぎずに新しい/古い作業プロセスを開始します

kill -HUP 旧/新版主进程号
ログイン後にコピー

古い/新しいプロセスを静かに閉じます

kill -QUIT 旧/新主进程号
ログイン後にコピー

エラーが発生した場合は、まだ終了していないプロセスがある場合は、次のコマンドを使用して、最初に古い/新しい作業プロセスを閉じてから、メイン プロセス番号を閉じます。

kill -TERM 旧/新工作进程号
ログイン後にコピー

Alibaba Cloud サーバー上で、nginx -s を停止してから再度開始します。nginx -s reload は常にエラーを報告します。

nginx: [error] open() “/alidata/server/nginx/logs/nginx.pid” failed (2: No such file or directory)
ログイン後にコピー

原因: nginx プロセスが強制終了された後、pid が失われ、nginx -次回からリロードが開始できなくなります。再インストールすると問題が解決することがあります。英語の説明も参照できます:

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
ログイン後にコピー

Linux システムの実行コマンドは次のとおりです:

えー

以上がnginx の再起動時に nginx.pid ファイルが失われた場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート