我有一个通过使用运行的脚本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
和\grep
unalias grep 和 ps (以防万一)
答案2
避免grep视为-c
一种选择,其中一些方法很少
grep -v -- 'bash -c'
grep -v 'bash \-c'
- ……