プロセス名を検索するbashスクリプトを作成しています。この名前は、スクリプトの実行時に使用されるパラメーターです。
ps -ef | grep [w]ord
通常、フローを正しく作成するためにこれを行うことができます。 grep(here) の引数が[w]ord
次の場合$1
例:
ps -ef | grep [f]fmpeg
次の行が表示されます。それがすべてです。
jan 117977 117966 0 20:07 pts/0 00:00:01 ffmpeg ..
スクリプトで同じ動作が必要で、スクリプトでパラメータをgrepパラメータに設定した場合:
ps -ef | grep "$1"
これを呼び出すと、./script.sh ffmpeg
ffmpegプロセス(正しい)とgrep
andbash
プロセスが表示されます。
jan 117977 117966 0 20:07 pts/0 00:00:01 ffmpeg ..
jan 118566 117021 0 20:14 pts/4 00:00:00 bash ./script.sh ffmpeg
jan 118568 118566 0 20:14 pts/4 00:00:00 grep ffmpeg
出力の最後の2行には興味がありません。
ベストアンサー1
ただ実行してください:
pgrep -fl script.sh
からman pgrep
:
pgrep、pkill、pidwait - 名前やその他の属性に基づいてプロセスを見つけ、シグナルを送信し、待機します。
-f
パターン--full
は通常プロセス名とのみ一致します。 -fを設定すると、コマンドライン全体が使用されます。
-l
、--list-name
プロセス名とプロセスIDをリストします。 (pgrepのみ)。