加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 检查进程是否正在运行,如果没有,请使用Cron重新启动它

发布时间:2020-12-15 21:35:21 所属栏目:安全 来源:网络整理
导读:我用followin代码创建了restart.sh #!/bin/bashps -aux | grep sidekiq /dev/nullif [ $? -eq 0 ]; then echo "Process is running."else echo "Process is not running."fi 检查sidekiq进程是否正在运行.我将把这个脚本放在cron中每天运行,所以如果sidekiq
我用followin代码创建了restart.sh

#!/bin/bash
ps -aux | grep sidekiq > /dev/null
if [ $? -eq 0 ]; then
  echo "Process is running."
else
  echo "Process is not running."
fi

检查sidekiq进程是否正在运行.我将把这个脚本放在cron中每天运行,所以如果sidekiq没有运行,它将自动启动.

我的问题是,与

ps -aux | grep sidekiq

即使进程没有运行,它也会显示出来

myname 27906  0.0  0.0  10432   668 pts/0    S+   22:48   0:00 grep --color=auto sidekiq

而不是没有.这在grep中计算,因此即使进程未运行,它也会显示为“sidekiq”进程正在运行.怎么不算这个结果?我相信我必须使用awk,但我不知道如何在这里使用它来更好地过滤.

解决方法

从ps输出中排除grep结果.做

ps -aux | grep -v grep | grep sidekiq

(或)对进程名称进行regEx搜索,即s后跟剩余的进程名称.

ps -aux | grep [s]idekiq

为了避免这种冲突,在搜索使用过程中直接使用grep pgrep进程名称

pgrep sidekiq

使用pgrep的有效方法如下所示.

if pgrep sidekiq >/dev/null
then
     echo "Process is running."
else
     echo "Process is not running."
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读