![ジョブ制御用の「kill」コマンドは、プロセスにシグナルを送信するための「kill」コマンドと同じですか?](https://rvso.com/image/122421/%E3%82%B8%E3%83%A7%E3%83%96%E5%88%B6%E5%BE%A1%E7%94%A8%E3%81%AE%E3%80%8Ckill%E3%80%8D%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E3%80%81%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AB%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%80%8Ckill%E3%80%8D%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A8%E5%90%8C%E3%81%98%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
Linux では、次の操作を実行できます。
kill 1
(またはkill %1
)
これは「プロセスを閉じる」という意味です仕事番号1「」。
そして、次のことができます。
kill 1234
これは、「SIGTERM
PID 1234 のプロセスに信号を送信する」という意味です。
これら 2 つのkill
コマンドは同じコマンドですか、それとも異なるコマンドですか?
答え1
それができるかどうかはわかりませんkill 1
(というか、試すことはできますが、ルート権限がない限り許可されず、驚くことになるでしょう)。1
ここでは、常に ID 1 のプロセスを指します。これは通常init
(またはその変形) です。
実際の質問への回答としては、ジョブ制御をサポートするシェルを使用している場合、kill
両方のケース(ジョブとプロセスの管理)を処理するシェルが組み込まれています。たとえば、Bashのkill
コマンド。
ジョブ制御をサポートしていないシェル(あるのでしょうか?)の場合は、kill
通常はシステム内のバイナリになります/bin/kill
。たとえば、util-linux
のkill
コマンド組み込みkill
コマンドを持つシェルでも、たとえばフルパスを指定することでこのコマンドにアクセスできます。このkill
コマンドは、シェルなしでもアクセスできます (別のプログラムから使用する場合)。
参照POSIXの定義kill
は、両方のケースをカバーします (ただし、どこに何が実装されているかは指定しません)。