Sae*_*eed 4 linux bash grep ps
我想检查命令是否正在使用以下if
子句运行,但它总是true
,无论命令实际上是否正在运行:
if [ $"(ps aux | grep curl)" ]; then echo is; else echo not; fi
Run Code Online (Sandbox Code Playgroud)
结果:
[root@is ~]# if [ $"(ps aux | grep curl)" ]; then echo is; else echo not; fi
is
Run Code Online (Sandbox Code Playgroud)
ps
外部的命令if
:
[root@is ~]# ps aux | grep curl
root 216564 0.0 0.2 6408 2064 pts/0 S+ 22:22 0:00 grep --color=auto curl
Run Code Online (Sandbox Code Playgroud)
如何检查curl
我的示例是否正在运行?
我尝试使用不同的参数ps
,但我总是有grep
命令(这在我看来是正常的),但我不知道如何检查它是否正在运行。
更新1
我想我可以做到这一点,但我不知道如何在命令中做到这一点:
if ps aux blah
if it has only one line (I suppose somehow use `wc -l`
then do something
else do something else
fi
fi
Run Code Online (Sandbox Code Playgroud)
Des*_*666 11
您可以只使用pgrep curl
,它仅在找到正在运行的进程时才返回进程 ID。例子:
[ -n "$(pgrep curl)" ] && echo "yes" || echo "no"
Run Code Online (Sandbox Code Playgroud)
使用 grep 本身跳过该行的常见技巧是使用某种正则表达式:
ps aux | grep '[c]url'
Run Code Online (Sandbox Code Playgroud)
命令本身现在不包含字符串curl
本身,因此它不会匹配。
归档时间: |
|
查看次数: |
1512 次 |
最近记录: |