Kill 命令的 /bin/ 前缀消除了错误消息

Kill 命令的 /bin/ 前缀消除了错误消息

我有 Debian Stretch..

我认为普通用户可以以 root 身份杀死 root 进程。我/bin/kill 10733以用户身份使用该命令。没有任何错误消息。然后,我输入类似的命令(不带/bin/前缀)并显示错误消息。

这是命令历史记录

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$ 

事实上,我更喜欢前缀和消息。如何获得?为什么会这样呢?

答案1

在您的示例中,该kill命令是 shell 内部命令(绝对在 中bash),并且它允许扩展,例如%1用于引用后台进程。

另一方面,/bin/kill它是一个外部命令,没有这些扩展。因为它是一个不同的程序,所以它的行为也不同。失败/bin/kill可能是静默的,但设置$?(退出代码)来指示失败。

当你跑步时,sudo kill你就在隐式地跑步sudo /bin/kill

相关内容