我需要返回一些值。 它可以是任何东西。
如果服务正在运行,此代码将返回“08:10”。
ps -eo comm,etime | grep httpd | head -1 | tail -c 9
但是如果服务没有运行怎么办?
service httpd stop
让我们再试一次:
ps -eo comm,etime | grep httpd | head -1 | tail -c 9
绝对没有。
对我来说这是个问题。我的php数组需要一些东西可以使用。
我怎么能......返回某种东西而不是什么?
没有采取巨大的复杂性。
即使以下情况也适合我。
无论输出是什么,只需将一个字符附加或预先输出到输出中。
或许那对计算机的压力会减少?只需将“0”附加到输出的任何位置即可。即使它什么都不是(空的)
答案 0 :(得分:0)
这是pgrep
的作业:
pgrep httpd
如果进程正在运行,退出状态($?
)将为0
,以及STDOUT上的统计信息。如果流程未运行,退出状态将为1
。
如果需要,请匹配整个命令行:
pgrep -f httpd
如果您不需要STDOUT:
pgrep -f httpd >/dev/null
如果您在流程未运行时想要STDOUT上的某些内容,请对失败的案例进行短路评估:
pgrep httpd || echo NO
当进程未运行时,这将在STDOUT上输出NO
。
答案 1 :(得分:0)
这可能不是那么复杂:
ret=$(ps -eo comm,etime | grep httpd | head -1 | tail -c 9)
if [ -z "$ret" ];then
echo "What you want"
else
echo "${ret}"
fi
答案 2 :(得分:0)
我同意@heemayl认为pgrep会是更好的选择。但是,这可能会有所帮助:
{ ps -eo comm,etime; echo "httpd not running"; } | grep -m 1 httpd | cut -d- -f2