关于linux服务器守护应用进程
2019-09-25 本文已影响0人
邪恶的正派
之前公司在做项目测试的时候,处理了一个守护进程。现在,将守护进程的方法步骤分享。具体步骤如下:
-
实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。
-
先检查一下是否安装了crontab。一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:yum install vixie-cron,yum install crontabs。如图所示:
查询是否安装crontabs -
crontab执行定时(每隔30S执行一次)
crontab –e
在vi编辑器按i键输入
*/1 * * * * /mnt/test.sh
*/1 * * * * sleep 30 && /mnt/test.sh
*/1 * * * * sleep 60 && /mnt/test.sh
按esc,shift+:,输入wq保存退出 -
/mnt/test.sh 的实现,具体代码如下:
#! /bin/sh
host_dir=`echo ~` # 当前用户根目录
proc_name="/home/hearken/jdk1.8.0_131/bin/java" # 进程名
file_name="/mnt/bindmonitor.log" # 日志文件
pid=0
echo "++++++++++++++++++++++++++++++++++++" >> $file_name
proc_num() # 计算进程数
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
echo "计算进程数----" >> $file_name
echo $num, `date` >> $file_name
return $num
}
proc_id() # 进程号
{
pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
echo "进程id----" >> $file_name
echo ${pid}, `date` >> $file_name
}
proc_num
number=$?
if [ $number -eq 0 ] # 判断进程是否存在
then
JAVA_HOME=/home/hearken/jdk1.8.0_131
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
export PATH="/usr/local/python2.7/bin:$PATH"
echo "重启进程" >> $file_name
cd /home/hearken/jboss-JR/bin
/usr/bin/nohup ./run.sh >>/mnt/1.txt 2>&1 &
echo $?,"重启结果" >> $file_name # 重启进程的命令,请相应修改
proc_id # 获取新进程号
echo ${pid}, `date` >> $file_name # 将新进程号和重启时间记录
fi
-
开启crontab服务
开启crontab服务
启动服务成功,查看服务状态可使用systemctl status crond命令,也可以使用tail -f /var/log/cron查看打印的日志。
- 删除进程测试
a、先使用ps –ef|grep named(named为进程名)命令查看进程,然后使用kill -9 id(id为进程号)杀掉进程
b、5分钟后,cat /mnt/bindmonitor.log看看有无最新的记录,进程号与# ps -ef |grep named 进程号对应。
如果想开机自启动守护进程,只需要去编辑 /etc/rc.d/rc.local文件
vi /etc/rc.d/rc.local
如图所示,添加systemctl start crond.service保存退出,在重启服务器后将自动守护进程。
添加如图标记的代码
以上就是关于守护进程的方法。