Killコマンドの/bin/プレフィックスはエラーメッセージを削除します。

Killコマンドの/bin/プレフィックスはエラーメッセージを削除します。

Debian ストレッチがあります。

一般ユーザーは、ルートプロセスをルートに殺すことができると思います。私は/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コマンドはシェル内部コマンド(確かに)であり、バックグラウンドプロセスを参照するbashなどの拡張を許可します。%1

一方、/bin/kill外部コマンドなので、これらの拡張子はありません。他のプログラムなので違うように動作します。失敗は/bin/kill自動的に表示できますが、$?失敗を示すように(終了コード)設定されます。

実行するとsudo kill暗黙的に実行されますsudo /bin/kill

関連情報