返回非空输出:grep httpd |头-1 | tail -c 9

时间:2017-01-16 05:58:47

标签: bash awk sed grep tr

我需要返回一些值。 它可以是任何东西。

如果服务正在运行,此代码将返回“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”附加到输出的任何位置即可。即使它什么都不是(空的)

3 个答案:

答案 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