irpas技术客

Linux下通过定时任务检测进程并重启_Novicee_linux定时任务重启进程

irpas 2036

一、重启特定进程的脚本 #! /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 fi

crontab -e

#开机自启动任务 @reboot /bin/sh /home/wat/test/start.sh #每分钟执行一次start.sh脚本 * * * * * /bin/sh /home/wat/test/start.sh

在输出文件log.txt中,每过一分钟增加一条记录”不相等“


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #linux定时任务重启进程 #一重启特定进程的脚本 #binbashps #EF #grep #quot进程名字quot