web-dev-qa-db-ja.com

実行中のbashスクリプトをスクリプト名でリストするにはどうすればよいですか?

psはプロセスの名前としてbashを返します...代わりにシェルスクリプトの名前が欲しいです。

たとえば、私のスクリプトがTestEric.shである場合、現在実行中のそのスクリプトのインスタンスの数をリストしたいと思います。

7
Eric Mamet

ここでの問題は、psがデフォルトで出力に基本コマンドのみを表示し、引数を含むコマンドライン全体ではないことです。

bash TestEric.shを使用してスクリプトを起動する場合、ベースコマンドはbashです。 TestEric.sh(おそらくパスを含む)として実行する場合、ベースコマンドはbashではなく、そのコマンドになります。


pgrepの代わりにpsを簡単に使用して、名前でフィルター処理されたプロセスを一覧表示できます。 -fフラグがあり、指定されたパターンをベースコマンドだけでなくコマンドライン全体と一致させます。

-aフラグを使用すると、PIDだけでなく、デバッグ目的でコマンドライン全体が出力に表示されます。動作を確認したら、スクリプトで再度削除する必要があります。

これを試して:

pgrep -f -a TestEric.sh

wc出力行をカウントすることにより、後でpgrepを使用してプロセスをカウントできます。

pgrep -f TestEric.sh | wc -l
9
Byte Commander

代わりにps uを実行してみてください。マニュアルページから、uオプションはdisplay user-oriented formatに対応しており、スクリプトの実行に使用されるシェルとスクリプト自体の名前の両方が表示されます。

2
Elhitch

どうやら、ファイルの先頭に!#/bin/bashを追加すると役立ちます...スクリプトの名前がpsレポートに表示されます。

1
Eric Mamet