Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 检查ps aux进程_Bash_Shell - Fatal编程技术网

Bash 检查ps aux进程

Bash 检查ps aux进程,bash,shell,Bash,Shell,当程序运行时,执行ps aux | grep PARAMON可以让我: david 80810 95.1 3.6 3113624 599036 s007 RN+ 1:43PM 0:01.54 python ./parse_paramount.py david 80812 0.0 0.0 2432768 600 s011 R+ 1:43PM 0:00.00 grep paramount david 8

当程序运行时,执行ps aux | grep PARAMON可以让我:

david          80810  95.1  3.6  3113624 599036 s007  RN+   1:43PM   0:01.54 python ./parse_paramount.py
david          80812   0.0  0.0  2432768    600 s011  R+    1:43PM   0:00.00 grep paramount
david          80809   0.0  0.0  2432768    588 s011  R+    1:43PM   0:00.00 grep  paramount
当程序未运行时,执行相同的命令会使我:

david          80810  95.1  3.6  3113624 599036 s007  RN+   1:43PM   0:01.54 python ./parse_paramount.py
david          80812   0.0  0.0  2432768    600 s011  R+    1:43PM   0:00.00 grep paramount
david          80809   0.0  0.0  2432768    588 s011  R+    1:43PM   0:00.00 grep  paramount

如果程序正在运行,如何编写bash脚本以返回true,如果程序未运行,如何编写bash脚本以返回false?

注释中对其他方法有一些很好的建议。要回答您的具体问题,请使用以下技巧:

ps aux|grep '[p]aramount'
grep支持正则表达式。这是因为regex[p]aramount与字符串paramont匹配,但与字符串[p]aramount不匹配


如上图所示,将[p]aramount放在引号中很重要,这样bash在将其传递给grep之前不会将其弄坏。

不要这样做。请改用pgrep…不过,如果您的目标是在故障时重新启动某个程序,那么您也不应该使用pgrep-您应该使用一个流程监控框架,该框架利用等待调用在其子进程退出时立即获得通知,而无需轮询。其中有很多—runit、daemontools、supervisor、upstart、systemd。。。甚至是带有inittab的SysV init也可以与restart标志一起使用。或者,您可以使用flock的锁文件来更好地了解某个东西是否正在运行,从而保持锁-ps aux方法会给您带来各种误报,例如将vim paramont.py标记为paramont本身,而将状态绑定到锁文件可防止名称冲突产生意义。另请参阅