マニュアルページに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: コマンドが見つかりません
私が間違っていたのか?
答え1
kill [ -s signal | -p ]
マニュアルページでは、この構文の意味は次のとおりです。
あなたはそれを使用することができます
kill -s signal
またはは使用できますが、同時に両方を使用するkill -p
ことはできません。-s
-p
パイプ(|
)は(排他的に)表されるか、文書内のコマンドの一部ではありません。
入力したとおり
foo | bar
シェルは出力を開始しfoo
、プログラムにパイプしようとします。 (これは(または)ではなく、シェルが実行する操作であり、両方のプロセスに渡されません。)あなたの場合、2番目の部分なので、シェルは名前付き実行可能ファイルを見つけようとしますが、エラーメッセージで失敗します。bar
foo
bar
foo
bar
|
-p 123
-p
答え2
kill
Bashにという命令が組み込まれているという事実を誤解しているようですkill
。
$ type -a kill
kill is a shell builtin
kill is /usr/bin/kill
kill is /bin/kill
あなたが読んでいるマニュアルページはkill
以下のコマンドを参照してください/bin
。フルパスを使用して召喚します。
$ /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