почему операция не разрешена, когда убить несуществующий процесс и почему нужно убить с помощью sudo

5782
WeizhongTu

Версия для 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 

Я не могу найти PID, но я попытался убить его с помощью своей учетной записи. Тем не менее, он сказал, что операция не разрешена, а не такой процесс

[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 

затем я попытался убить его sudo, я выполнил

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

Затем я снова выполнил свой аккаунт

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

Я уверен, что pid 20795 генерируется моей учетной записью. В настоящее время я не могу найти 20795, но когда я убиваю его, возвращаю Operation not permittedвместо него No such process, я хочу знать, почему и почему мой процесс должен быть убит sudo

0
В Ubuntu `ps -ef` выдает одинаковый список независимо от` sudo`. Похоже, что PID 20795 был свободен в тот момент, когда вы выполняли «grep», но затем был назначен другому процессу. Или это мог быть идентификатор потока, но я не знаю, что делает kill с TID. AFH 7 лет назад 0

2 ответа на вопрос

1
Kamil Maciorowski

Заметьте, что вы ps -ef | grep 20795вернули grepтолько себя - совпадение было с командной строкой, а не с PID. Не было процесса с PIDуказанным вами.

Я предполагаю, что число могло быть неправильным. Вероятно, он совпадает с чьим-либо идентификатором потока и таким образом sudo killуничтожает весь чужой процесс, который не соответствует вашим ожиданиям.

1
A. Loiseau

Вы не являетесь владельцем процесса, который пытаетесь убить. Это является причиной как psвывода, в котором не указан процесс 20795 (см. Ответ @ kamil-maciorowski), так и sudoтребования убить 20795.

Вы можете использовать, ps auxчтобы перечислить все процессы, включая те, которые вам не принадлежат. Вы также можете использовать -pаргумент, чтобы показать конкретный процесс, который лучше всего соответствует вашим потребностям:

ps -up 20795 

Вы увидите что-то вроде этого:

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 

Я предполагаю, что пользователь будет пользователем root (с повышенными правами) или, возможно, другим конкретным системным пользователем. Затем вам нужно sudoубить процесс, который вам не принадлежит. И вам удастся убить его. Пустой ответ для sudo kill 20795говорит, что это сработало.

Похожие вопросы