Linux下通过定时任务检测进程并重启 | 您所在的位置:网站首页 › linux重启定时任务服务 › Linux下通过定时任务检测进程并重启 |
一、重启特定进程的脚本
#! /bin/bash
ps -ef | grep "进程名字" | grep -v grep
#如果进程搜索不出来,则$?的值为1,否则值为0
#当$?值不等于0的时候,重新启动进程
if [ $? -ne 0 ]
then
cd "进程所在目录" && "执行进程的语句"
else
echo "running"
fi
二、将上述脚本设置为定时任务
设置定时任务需要用到crontab crontab [-u username] //省略用户表表示操作当前用户的crontab -e (编辑工作表) -l (列出工作表里的命令) -r (删除工作作)用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。 crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有 取值范围内的所有数字/ 每过多少个数字-从X到Z,散列数字 每五分钟执行 */5 * * * * 每五小时执行 0 */5 * * * 每天执行 0 0 * * * 每周执行 0 0 * * 0 每月执行 0 0 1 * * 每年执行 0 0 1 1 * 三、一些坑crontab定时任务需要至少有能够执行crontab命令的权限。 可以是wheel用户组用户或者root用户组用户。普通用户好像没有执行定时任务的权限。 crontab定时执行脚本时,没有环境变量的支持 如果脚本中用到一些环境变量,需要将此环境变量在脚本中导入 crontab执行.sh后缀脚本 crontab -e而后编辑定时任务。 格式为 : 时间 命令 如果命令为执行.sh脚本,则应该这样写: /bin/sh 你的脚本位置的全路径(一定要全路径)对脚本内容的要求 定向输入文件要写全路径名, 基本上所有的东西都要写全路径名。 除非导入了PATH环境变量。 四、一个例子start.sh if [ 1 -ne 2 ] then echo "不相等" >> /home/wat/test/log.txt else echo "相等" >> /home/wat/test/log.txt ficrontab -e #开机自启动任务 @reboot /bin/sh /home/wat/test/start.sh #每分钟执行一次start.sh脚本 * * * * * /bin/sh /home/wat/test/start.sh在输出文件log.txt中,每过一分钟增加一条记录”不相等“ |
CopyRight 2018-2019 实验室设备网 版权所有 |