Eu tenho o Debian Stretch..
Eu pensei que um usuário comum poderia matar o processo root como root. Eu estava usando o comando /bin/kill 10733
como o usuário. Não houve nenhuma mensagem de erro. Então, digitei o comando semelhante (sem /bin/
prefixo) e a mensagem de erro foi exibida.
Aqui está o histórico de comandos
deployer@deployer:~/blog$ kill 10733
-bash: kill: (10733) - Operation not permitted
deployer@deployer:~/blog$ /bin/kill 10733
deployer@deployer:~/blog$ ps aux|grep 10733
root 10733 0.0 0.6 92360 6404 ? Ss 19:19 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
deployer 10891 0.0 0.2 12732 2236 pts/0 S+ 20:10 0:00 grep 10733
deployer@deployer:~/blog$ sudo kill 10733
deployer@deployer:~/blog$ ps aux|grep 10733
deployer 10900 0.0 0.2 12732 2232 pts/0 S+ 20:10 0:00 grep 10733
deployer@deployer:~/blog$
Na verdade, eu preferiria tanto o prefixo quanto a mensagem. Como conseguir isso? E por que é assim?
No seu exemplo, o
kill
comando é um shell interno (definitivamente embash
) e permite que extensões%1
sejam usadas para se referir a processos em segundo plano.Por outro lado,
/bin/kill
é um comando externo e não possui essas extensões. Como é um programa diferente, ele age de maneira diferente. Uma falha/bin/kill
pode ser silenciosa, mas define$?
(código de saída) para indicar uma falha.Quando você executa,
sudo kill
você está executando implicitamentesudo /bin/kill
.