kill
のマニュアルページには、次のように書かれています。
概要
kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals.
しかし、RHとRHELの両方で何度も試行したため、kill -s SIGHUP |-p 123
のようなコマンドは機能せず、エラーが常に報告されます
bash :-p:コマンドが見つかりません
私は間違いをしましたか?
kill [ -s signal | -p ]
マニュアルページのこの構文は、次のことを意味します。
kill -s signal
を使用できますまたはkill -p
を使用できますが、-s
と-p
を同時に使用することはできません。
パイプ(|
)は(排他的)を表すか、ドキュメントではコマンドの一部ではありません。
入力すると
foo | bar
シェルでは、foo
とbar
の起動を試み、foo
の出力をbar
プログラムにパイプします。 (それはfoo
(またはbar
)ではなく、それを行うシェルです。|
はどちらのプロセスにも渡されません。)あなたの場合、2番目の部分は-p 123
であるため、シェルは-p
という実行可能ファイルを見つけようとし、そのエラーメッセージで失敗します。
コマンドkill
とともに、kill
と呼ばれるBashへの組み込みコマンドがあるという事実につまずいたと思います。
$ type -a kill
kill is a Shell builtin
kill is /usr/bin/kill
kill is /bin/kill
あなたが読んでいるマニュアルページは、/bin
の下にあるkill
コマンドを参照しています。フルパスを使用して呼び出します。
$ /bin/kill -p sleep
16486
ちなみに、/usr/bin/kill
は/bin/kill
への単なるリンクです。
$ ls -l /usr/bin/kill
lrwxrwxrwx 1 root root 14 Feb 9 2011 /usr/bin/kill -> ../../bin/kill
$ readlink -m /usr/bin/kill
/bin/kill