を使用して実行中のスクリプトがあり、bash -c
そのスクリプトを使用して実行されているプロセスの数を知りたいです。
$ ps ax | grep my_script_run | grep -v grep | grep -v "bash -c"
11121 ? S 0:00 bash -c export PATH="/opt/rbenv/bin:$PATH"; ruby my_script_run.rb
11173 ? Rl 19:38 ruby my_script_run.rb
どういうわけか、上記のコマンドはbash -c
文字列を除外しません。
$ ps ax | grep my_script_run | grep -v grep | grep -v bash
11173 ? Rl 19:42 ruby my_script_run.rb
bash -c
このコマンドはうまく機能しますが、それ自体ではなくそのコマンドを除外したいと思いますbash
。最初のコマンドはなぜ除外されないのですかbash -c
?どうすれば正しく除外できますか?
編集する
wc -l
次回使うものを書くのを忘れてしまいました。grep
答え1
何について
ps ax | grep -c [m]y_script_run
2つのプロセスで計算する必要があります。
または
\ps ax | \grep '[m]y_script_run' | \grep -v 'bash -c' -c
どこで(編集)
-c
行を数える[m]y_script_run
grepの正規表現のトリックですが、my_script_run
それ自体ではありません。 (欠点は固定文字列でのみ機能します${myvar}
。@ G-Manに感謝します。この文字列を引用する必要があります。\ps
unalias\grep
grep と ps (もしそうなら)
答え2
避けるgrep-c
オプションと見なされ、その一部にはほとんど方法がありません。
grep -v -- 'bash -c'
grep -v 'bash \-c'
- …