【发布时间】:2016-08-12 09:02:36
【问题描述】:
我编写了一个脚本,它检查进程是否正在运行。如果没有,则开始该过程。 假设我很少有这样运行的进程:
root 5780 0.0 2.2 3168184 85828 ? Sl 09:02 0:15 /usr/bin/java -jar /home/vtermina/private/crons/jar/consumer-1.0.jar promotionalSecond
root 5780 0.0 2.2 3168184 85828 ? Sl 09:02 0:15 /usr/bin/java -jar /home/vtermina/private/crons/jar/consumer-1.0.jar promotionalSecond backup
root 8989 0.0 1.4 2966364 57540 ? Sl 09:04 0:07 /usr/bin/java -jar /home/vtermina/private/crons/jar/update-report-1.0.jar Rb1 backup
所以我使用以下命令来检查进程是否正在运行:
ps uax|grep -w "consumer-1.0.jar promotionalSecond" |grep -v grep|wc -l
如果这个命令发现一个进程正在运行,它会返回一个。 直到最近,当我也开始使用一些备份消费者时,它都运行良好。 现在如果备份消费者正在运行,这个命令返回1,即使消费者没有运行,
如何在 ps aux. 以便我的命令给出正确的结果。
【问题讨论】:
-
相关:bash: differing newline count when assigning result to variable。问题是
ps | grep运行一个子shell,它也被返回。