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 sidekiq 使用pgrep的有效方法如下所示. if pgrep sidekiq >/dev/null then echo "Process is running." else echo "Process is not running." fi (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |