Linux系统定时任务crontab使用

原因

最近其他项目组在测试环境调用我们接口进行压测,导致项目经常挂,需要手动重启。手动重启很简单,但是每次需要自己来重启,确实挺麻烦的,特别是有时候下班了,项目挂了,他们还在测。

解决

于是写了个脚本,用Linux自带的crontab计划任务来每15分钟循环检测一下项目是否挂了,如果挂了,就自动重新执行一下启动脚本就行了。

准备

首先写一个脚本,监听端口是否已经挂了。(这里拿我服务器上的mysql作为例子,每分钟检测一下mysql是否挂了,其它的仿照着改一下就行了)
vi autorestart.sh (这个脚本用来监听端口是否存在,如果不存在则进行重启)

#!/bin/bash
now=$(date "+%Y-%m-%d %H:%M:%S")#记录当前的时间
status=$(netstat -lnp|grep ":3306 "|awk '{print $6}')#获取3306端口的状态
if test -z $status #判断status是否为空
then
   /usr/sbin/service mysql restart #service命令启动mysql,service的路径要写全
   echo "$now:进程挂了....." >> /home/gepeisong/test/test.log #将进程状态写入日志中
else
   if test "LISTEN" = $status
   then
      echo "$now:进程正在运行中....." >> /home/gepeisong/test/test.log
   else
      /usr/sbin/service mysql restart
      echo "$now:进程挂了....." >> /home/gepeisong/test/test.log
   fi
fi

接下来就只要把这个shell脚本加入crontab中循环执行,输入crontab -e,在里面加入每分钟执行一次的脚本(*/15 * * * *:每15分钟执行一次)

*/1 * * * * sh /home/gepeisong/test/autorestart.sh

输入crontab -l查看状态。

crontab -l

查看日志,可以看见每分钟执行一次。

cat test.log
网上找的关于crontab的参数介绍

你可能感兴趣的:(Linux系统定时任务crontab使用)