当前位置: 技术问答>linux和unix
redhat9 如何让软件进程在死掉之后自动重启
来源: 互联网 发布时间:2016-06-15
本文导语: 在网络上找了很常时间,也发现有些人介绍的方法,但是对Linux不是太了解,所以那些介绍的比较粗略的方法没有办法进行测试,麻烦各位给个详细点的操作步骤 现在我有个软件运行在redhat9 系统上面,可能是因为...
在网络上找了很常时间,也发现有些人介绍的方法,但是对Linux不是太了解,所以那些介绍的比较粗略的方法没有办法进行测试,麻烦各位给个详细点的操作步骤
现在我有个软件运行在redhat9 系统上面,可能是因为程序设计的问题,在每天访问量比较大的时候,这个程序会自动关闭,麻烦,问下,如何检测软件关闭,而且在软件关闭之后再重新启动呢?
现在我有个软件运行在redhat9 系统上面,可能是因为程序设计的问题,在每天访问量比较大的时候,这个程序会自动关闭,麻烦,问下,如何检测软件关闭,而且在软件关闭之后再重新启动呢?
|
用ps | grep很容易误判。RH可以这样:
# COMMAND_NAME就是你的程序名称
# 1、把脚本放在监控程序所在目录
# 2、执行crontab -e
# 3、加入一行:* * * * * 这个脚本的绝对路径
# 4、保存退出
# 以上步骤执行完之后每分钟脚本会对你指定的程序进行一次监控
#!/bin/bash
path=$(dirname $(readlink /proc/$$/fd/255))
pgrep COMMAND_NAME | xargs -i readlink -f /proc/{}/exe | grep "$path/COMMAND_NAME" || { cd $path; ./COMMAND_NAME & }
# COMMAND_NAME就是你的程序名称
# 1、把脚本放在监控程序所在目录
# 2、执行crontab -e
# 3、加入一行:* * * * * 这个脚本的绝对路径
# 4、保存退出
# 以上步骤执行完之后每分钟脚本会对你指定的程序进行一次监控
#!/bin/bash
path=$(dirname $(readlink /proc/$$/fd/255))
pgrep COMMAND_NAME | xargs -i readlink -f /proc/{}/exe | grep "$path/COMMAND_NAME" || { cd $path; ./COMMAND_NAME & }
|
就是加多一个程序进行监控,也就是所谓的软件看门狗了。
一种方法是你在监控程序里面,调用 ps -aux 命令,把命令输出到一个文件里面去,然后在这个文件里面找你的主程序的名字,如果找不到的话,可能就是主程序已经关闭,需要在监控程序重启了。
另一种方法就是你的主程序开一个循环,然后在这个循环里面,你可以隔一段时间(比如1秒钟)去更新一个临时文件,可以调用 touch 命令。然后监控程序里面不断去判断该临时文件的更新时间,如果超过主程序规定时间没有更新的,则主程序应该是关闭了,监控程序就应该去重新开启了。
一种方法是你在监控程序里面,调用 ps -aux 命令,把命令输出到一个文件里面去,然后在这个文件里面找你的主程序的名字,如果找不到的话,可能就是主程序已经关闭,需要在监控程序重启了。
另一种方法就是你的主程序开一个循环,然后在这个循环里面,你可以隔一段时间(比如1秒钟)去更新一个临时文件,可以调用 touch 命令。然后监控程序里面不断去判断该临时文件的更新时间,如果超过主程序规定时间没有更新的,则主程序应该是关闭了,监控程序就应该去重新开启了。
|
直接用ps aux|grep process_name|grep -v process_name |wc -l
当检测到wc -l的值为0的时候则重新运行启动进程的命令。。。。
lz还有其他要求吗?一并发上来吧,大家一起帮你解决。。。
当检测到wc -l的值为0的时候则重新运行启动进程的命令。。。。
lz还有其他要求吗?一并发上来吧,大家一起帮你解决。。。