使用ps和wc检查服务是否在bash中运行的不同计数

时间:2017-07-25 07:07:29

标签: bash wc

我有一个小脚本来检查服务是否在bash中运行

#!/bin/bash

countlines=""$(ps -ef | grep netdata | grep -v grep | wc -l)

echo $countlines >> mylog.log

if [ ${countlines} -lt 3 ];then

sudo /bin/systemctl restart netdata

fi

问题是当我在命令行发出ps -ef | grep netdata | grep -v grep | wc -l时,结果总是3,但是mylog.log是:

6

[更新:添加过滤后的ps -ef结果]

forge@reportserver:~ ps -ef | grep netdata
netdata  22308     1  0 08:38 ?        00:00:37 /usr/sbin/netdata -D
netdata  22386 22308  0 08:38 ?        00:00:58 /usr/libexec/netdata/plugins.d/apps.plugin 1
netdata  47045 22308  0 11:38 ?        00:00:02 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
forge    52028 27902  0 12:34 pts/8    00:00:00 grep --color=auto netdata

为何如此不和谐?

1 个答案:

答案 0 :(得分:0)

拆分为2个命令以查明原因:

ps_grep_output=$(ps -ef | grep netdata | grep -v grep)

echo "$ps_grep_output" >> mylog.log

countlines=$(wc -l <<< "$ps_grep_output")

echo "$countlines" >> mylog.log