Maison  >  Article  >  Opération et maintenance  >  Que faire si le fichier nginx.pid est perdu lors du redémarrage de nginx

Que faire si le fichier nginx.pid est perdu lors du redémarrage de nginx

王林
王林avant
2020-10-19 17:31:574894parcourir

Que faire si le fichier nginx.pid est perdu lors du redémarrage de nginx

1. Arrêter le fonctionnement de nginx

(Tutoriel recommandé : Tutoriel nginx)

L'opération d'arrêt consiste à arrêter le Processus nginx par Ceci est réalisé en envoyant un signal. Le message d'erreur spécifique est le suivant :

[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)

Étape 1 :

Recherchez le numéro du processus principal nginx, le code est le suivant. :

ps -ef | grep nginx

dans Recherchez le processus maître dans la liste des processus, et son numéro est le numéro du processus principal.

Étape 2 :

Envoyer un signal pour arrêter Nginx gracieusement :

kill -QUIT 主进程号

Arrêtez Nginx rapidement :

kill -TERM 主进程号

Forcer l'arrêt de Nginx, le code est comme suit :

pkill -9 nginx

De plus, si le chemin de stockage du fichier pid est configuré dans nginx.conf, le fichier stockera le numéro du processus principal Nginx. S'il n'est pas spécifié, il sera placé dans nginx. répertoire des journaux. Avec le fichier pid, il n'est pas nécessaire d'interroger d'abord le numéro du processus principal de Nginx, mais d'envoyer directement un signal à Nginx. Le code de commande est le suivant :

kill -信号类型 ‘/usr/nginx/logs/nginx.pid’

2. Redémarrage en douceur de nginx.

Si après avoir modifié la configuration, vous pouvez envoyer un signal à Nginx et redémarrer en douceur.

Le code de la commande de redémarrage en douceur est le suivant :

kill -HUP 住进称号或进程号文件路径

ou utiliser

/usr/nginx/sbin/nginx -s reload

Notez qu'après avoir modifié le fichier de configuration, il est préférable de vérifier si le fichier de configuration modifié est corriger pour éviter de redémarrer Plus tard, une erreur s'est produite dans Nginx, ce qui a affecté le fonctionnement stable du serveur. Le code de commande pour déterminer si la configuration de Nginx est correcte est le suivant :

nginx -t -c /usr/nginx/conf/nginx.conf

ou

/usr/nginx/sbin/nginx -t

3. Mise à niveau en douceur de nginx

Si le le serveur exécute Nginx doit être effectué Lors de la mise à niveau, de l'ajout ou de la suppression de modules, nous devons arrêter le serveur et apporter les modifications correspondantes, afin que le serveur cesse de servir pendant un certain temps et que Nginx puisse effectuer diverses actions de mise à niveau sans arrêter le serveur. sans affecter le fonctionnement du serveur.

Étape 1 :

Si vous mettez à niveau le programme Nginx, remplacez d'abord l'ancien fichier du programme par le nouveau programme. Après la compilation et l'installation, le nouveau programme sera compilé directement dans le répertoire d'installation de Nginx. .

Étape 2 : Exécutez la commande

kill -USR2 旧版程序的主进程号或进程文件名

À ce stade, l'ancien processus principal de Nginx renommera son fichier de processus en .oldbin, puis exécutera la nouvelle version de Nginx. Le nouveau et l'ancien Nginx fonctionnent ensemble pour traiter les requêtes.

À ce stade, vous devez arrêter progressivement l'ancienne version de Nginx. Entrez la commande :

kill -WINCH 旧版主进程号

Lentement, l'ancien processus de travail se terminera à mesure que la tâche est terminée et la nouvelle version. du processus de travail de Nginx remplacera progressivement l'ancienne version.

Vous pouvez décider d'utiliser la nouvelle version ou de revenir à l'ancienne version.

4. Démarrez le nouveau/ancien processus de travail sans surcharger la configuration

kill -HUP 旧/新版主进程号

Fermez l'ancien/nouveau processus calmement

kill -QUIT 旧/新主进程号

Si une erreur est signalé à ce moment, invite S'il y a encore des processus qui ne sont pas terminés, utilisez la commande suivante pour fermer d'abord l'ancien/nouveau processus de travail, puis fermez le numéro du processus principal :

kill -TERM 旧/新工作进程号

Notez que sur le serveur Alibaba Cloud, le processus nginx -s s'arrête puis redémarre nginx -s reload signale toujours une erreur

nginx: [error] open() “/alidata/server/nginx/logs/nginx.pid” failed (2: No such file or directory)

Raison : le pid est perdu après la suppression du processus nginx, et nginx - Le rechargement ne pourra pas être démarré la prochaine fois. La réinstallation peut résoudre le problème. Vous pouvez également vous référer à l'explication en anglais :

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)

Comment utiliser, le code est le suivant :

nginx -c /path/to/config/file

La commande d'exécution du système Linux est la suivante :

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer