1
与跟随着的代码检查如果一个进程正在运行,如果没有,使用cron
#!/bin/bash
ps -aux | grep sidekiq > /dev/null
if [ $? -eq 0 ]; then
echo "Process is running."
else
echo "Process is not running."
fi
要检查是否sidekiq进程正在运行或不,我创建restart.sh重新启动它。我会把这个脚本放在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 -aux |'这一行grep sidekiq>/dev/null'在他的脚本..特别我喜欢第二个解决方案,这是临床。 – sjsam
@inian - grep -v grep完美运行,现在脚本正在运行。即使进程正在运行,当我在终端中运行时,pgrep sidekiq也不会给出任何结果。可能是因为sidekiq的作用方式? – iCyborg
有没有必要重定向到'/ dev/null'。只需使用'-q'选项,即可使用'grep'或'pgrep'。 – ghoti