Warum ist die Operation nicht zulässig, wenn ein nicht vorhandener Prozess beendet wird und warum mit Sudo beendet werden muss

5868
WeizhongTu

Linux-Version: 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 

Ich kann die PID nicht finden, dann habe ich versucht, sie über mein Konto zu töten. Es ist jedoch saied nicht Bedienung erlaubt statt keinen solchen Prozess

[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 

dann habe ich versucht, es zu töten sudo, ich habe ausgeführt

[weizhong@bja /tmp] $sudo kill 20795 <-- no output  [weizhong@bja /tmp] $sudo kill -9 20795 kill: sending signal to 20795 failed: No such process 

Dann habe ich nochmal mein Konto ausgeführt

[weizhong@bja /tmp] $kill 20795 -bash: kill: (20795) - No such process 

Ich bin sicher, dass PID 20795 von meinem Konto generiert wird. Momentan kann ich 20795 nicht finden, aber wenn ich es töte, kehre Operation not permittedstatt zurück No such process, ich möchte wissen, warum und warum mein Prozess durch sudo getötet werden muss

0
In Ubuntu gibt ps -ef die gleiche Auflistung unabhängig von sudo an. Es sieht so aus, als ob PID 20795 zu dem Zeitpunkt, als Sie das "grep" durchführten, frei war, aber dann einem anderen Prozess zugewiesen wurde. Oder es könnte eine Thread-ID gewesen sein, aber ich weiß nicht, was Kill mit TIDs macht. AFH vor 7 Jahren 0

2 Antworten auf die Frage

1
Kamil Maciorowski

Beachten Sie Ihr ps -ef | grep 20795die zurück grepsich nur - das Spiel mit der Kommandozeile war, nicht PID. Es gab keinen Prozess mit dem von PIDIhnen angegebenen.

Meine Vermutung ist, dass die Nummer möglicherweise falsch war. Es stimmte wahrscheinlich mit der Thread-ID einer anderen Person überein und sudo killtötete auf diese Weise den gesamten Prozess einer anderen Person, was nicht das war, was Sie wollten.

1
A. Loiseau

Sie sind nicht der Eigentümer des Prozesses, den Sie zu töten versuchen. Dies ist der Grund sowohl für die psAusgabe - die den Prozess 20795 nicht auflistete (siehe @ kamil-maciorowski-Antwort) - als auch die sudoAnforderung, 20795 zu töten.

Sie können ps auxalle Prozesse auflisten, einschließlich derer, die Sie nicht besitzen. Sie können -pargument auch verwenden, um einen bestimmten Prozess zu zeigen, der am besten zu Ihnen passt:

ps -up 20795 

Sie werden so etwas sehen:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND foo 20795 0.0 0.0 14728 1888 tty3 Ss+ 12:03 0:00 bar 

Meine Vermutung ist, dass der Benutzer root (erhöhte Berechtigungen) oder möglicherweise ein anderer spezifischer Systembenutzer ist. Sie müssen dann sudoeinen Prozess beenden, den Sie nicht besitzen. Und es ist dir gelungen, es zu töten. Die leere Antwort für sudo kill 20795sagt, dass es funktioniert hat.