porque operação não permitida ao matar um processo inexistente e por que precisa ser morto com sudo

0

Versão do 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

Não consigo encontrar o PID, depois tentei matá-lo pela minha conta. No entanto, foi considerado Operação não permitida em vez de Nenhum processo desse tipo

[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

tentei matar com sudo , executei

[weizhong@bja /tmp]
$sudo kill 20795    <-- no output

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

Em seguida, executei novamente minha conta

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

Tenho certeza de que o pid 20795 é gerado pela minha conta. Atualmente não consigo encontrar o 20795, mas quando o mato, devolvo Operation not permitted em vez de No such process , quero saber por quê e por que meu processo precisa ser eliminado pelo sudo

    
por WeizhongTu 05.02.2017 / 14:44

2 respostas

1

Você não é o proprietário do processo que está tentando matar. Esta é a razão para ambos os ps output - que não listou o processo 20795 (veja a resposta @ kamil-maciorowski) - e o requisito sudo para matar 20795.

Você pode usar ps aux para listar todos os processos, incluindo aqueles que você não usa Cidade. Você também pode usar o argumento -p para mostrar um processo específico que melhor se adapte à sua necessidade:

ps -up 20795

Você verá algo assim:

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

Meu palpite é que o usuário será root (privilégios elevados) ou talvez outro usuário específico do sistema. Você então precisa de sudo para matar um processo que você não possui. E você consegue matá-lo. A resposta vazia para sudo kill 20795 diz que funcionou.

    
por 05.02.2017 / 17:18
1

Observe que seu ps -ef | grep 20795 retornou somente o grep em si - a correspondência foi com a linha de comando, não com o PID . Não houve processo com o PID especificado.

Meu palpite é que o número pode estar incorreto. Ele provavelmente correspondeu ao ID do segmento de outra pessoa e dessa forma sudo kill matou todo o processo de alguém que não era o que você queria.

    
por 05.02.2017 / 15:23