Version Linux: CentOS 7
[weizhong@bja /tmp]
$ll apis_response_time_analysis.pid
-rw-r--r-- 1 weizhong users 5 Jan 22 09:40 apis_response_time_analysis.pid
[weizhong@bja /tmp]
$cat apis_response_time_analysis.pid
20795
[weizhong@bja /tmp]
$sudo ps -ef | grep 20795
weizhon+ 24876 9196 0 11:41 pts/2 00:00:00 grep --color=auto 20795
Je ne trouve pas le PID, puis j'ai essayé de le tuer avec mon compte. Cependant, il a déclaré que l’ opération n’était pas autorisée au lieu de celle-ci.
[weizhong@bja /tmp]
$kill -9 20795
-bash: kill: (20795) - Operation not permitted
[weizhong@bja /tmp]
$kill -9 20795123 <--- a pid not exists
-bash: kill: (20795123) - No such process
alors j'ai essayé de le tuer avec sudo
, j'ai exécuté
[weizhong@bja /tmp]
$sudo kill 20795 <-- no output
[weizhong@bja /tmp]
$sudo kill -9 20795
kill: sending signal to 20795 failed: No such process
Puis j'ai exécuté à nouveau par mon compte
[weizhong@bja /tmp]
$kill 20795
-bash: kill: (20795) - No such process
Je suis sûr que le pid 20795 est généré par mon compte. Actuellement, je ne trouve pas 20795, mais quand je le tue, retourne Operation not permitted
au lieu de No such process
, je veux savoir pourquoi et pourquoi mon processus doit être tué par sudo
ps -ef
donne la même liste indépendamment desudo
. Il semble que le PID 20795 était libre au moment où vous avez exécuté l'opérationgrep
, mais a ensuite été affecté à un autre processus. Ou cela aurait pu être un ID de thread, mais je ne sais pas ce qui sekill
passe avec les TID.Réponses:
Vous n'êtes pas le propriétaire du processus que vous essayez de tuer. C'est la raison à la fois du
ps
résultat - qui n'a pas répertorié le processus 20795 (voir la réponse @ kamil-maciorowski) - et de l'sudo
obligation de tuer 20795.Vous pouvez utiliser
ps aux
pour répertorier tous les processus, y compris ceux que vous ne possédez pas. Vous pouvez également utiliser un-p
argument pour indiquer un processus spécifique qui correspond le mieux à vos besoins:Vous verrez quelque chose comme ça:
Je suppose que cet utilisateur sera root (privilèges élevés) ou peut-être un autre utilisateur système spécifique. Vous devez ensuite
sudo
arrêter un processus que vous ne possédez pas. Et tu réussis à le tuer. La réponse vide poursudo kill 20795
dit cela a fonctionné.la source
Notez que vous avez
ps -ef | grep 20795
renvoyé legrep
message lui - même uniquement - la correspondance était avec la ligne de commande, pas lePID
. Il n'y avait pas de processus avec lePID
spécifié.Je suppose que le nombre peut avoir été incorrect. Cela correspond probablement à l'identifiant de thread de quelqu'un d'autre et cette manière a
sudo kill
tué le processus complet de quelqu'un d'autre, ce qui n'était pas ce que vous vouliez.la source