This
#!/bin/bash
if [ `ps -ef | grep "91.34.124.35" | grep -v grep | wc -l` -eq 0 ]; then sh home/asfd.sh; fi
这个还是这个?
ps -ef | grep "91\.34\.124\.35" | grep -v grep > /dev/null
if [ "$?" -ne "0" ]
then
sh home/asfd.sh
else
echo "Process is running fine"
fi
你好,请问如何编写一个Shell脚本,检查正在运行的进程,如果没有进程名包含91.34.124.35,则在特定位置执行一个文件,我希望将其每30秒运行一次,形成一个持续循环,我认为有一个睡眠命令。
!
前缀if
条件语句。此外,通过使用pgrep
(它始终排除自身)而不是ps
+grep
,可以简化if
语句为:if ! pgrep -f '91\.34\.124\.35' > /dev/null; then
。 - mklement0pgrep -q
不起作用,所以我使用了> /dev/null
重定向;另外,(a) 你需要使用-f
来匹配整个命令行,而不仅仅是进程名称,(b) 当你使用pgrep
时,你不需要[9]
的技巧(pgrep
默认不匹配自身);如果你再次更新,请在代码下面的项目符号中反映这些更改。 - mklement0