ジョブ制御用の「kill」コマンドは、プロセスにシグナルを送信するための「kill」コマンドと同じですか?

ジョブ制御用の「kill」コマンドは、プロセスにシグナルを送信するための「kill」コマンドと同じですか?

Linux では、次の操作を実行できます。

kill 1(またはkill %1

これは「プロセスを閉じる」という意味です仕事番号1「」。

そして、次のことができます。

kill 1234

これは、「SIGTERMPID 1234 のプロセスに信号を送信する」という意味です。

これら 2 つのkillコマンドは同じコマンドですか、それとも異なるコマンドですか?

答え1

それができるかどうかはわかりませんkill 1(というか、試すことはできますが、ルート権限がない限り許可されず、驚くことになるでしょう)。1ここでは、常に ID 1 のプロセスを指します。これは通常init(またはその変形) です。

実際の質問への回答としては、ジョブ制御をサポートするシェルを使用している場合、kill両方のケース(ジョブとプロセスの管理)を処理するシェルが組み込まれています。たとえば、Bashのkillコマンド

ジョブ制御をサポートしていないシェル(あるのでしょうか?)の場合は、kill通常はシステム内のバイナリになります/bin/kill。たとえば、util-linuxkillコマンド組み込みkillコマンドを持つシェルでも、たとえばフルパスを指定することでこのコマンドにアクセスできます。このkillコマンドは、シェルなしでもアクセスできます (別のプログラムから使用する場合)。

参照POSIXの定義killは、両方のケースをカバーします (ただし、どこに何が実装されているかは指定しません)。

関連情報