Linux系统下的定时任务Crontab

  • 什么是Crontab

Crontab是Linux系统下的定时任务工具,相当于WIN7系统的任务计划,能够让系统定时做出详见 Cron

  • Crontab能用来做什么

Crontab能用来添加Linux或者Unix系统中的定时任务,让系统定时执行某个命令,比如服务器的数据库需要每天凌晨重启下,不可能每天凌晨起来手动重启。可以用Crontab添加凌晨5点重启数据库的定时任务,系统到每天凌晨5点就会自动重启数据了。

Crontab能做的事情还很多,比如定时发送邮件,定时检验库存,定时清理日志,定时备份数据库,总之只要是具有周期性执行的任务基本都可以用Crontab来实现,当然前提在Linux系统环境下。

  • Crontab简单使用

1.常用基本命令

crontab -l   列出当前登录用户所有定时任务

crontab -l -u XXX  列出XXX用户的所有定时任务,如有没有会提示 no crontab for XXX

crontab -e  编辑当前用户的定时任务

crontab -r   删除当前用户的定时任务

2.定时任务的时间设置

* * * * *               每分钟执行

*/1 * * * *            每分钟执行

0 5 * * *                每天五点执行

0-59/2 * * * *        每隔两分钟执行,且是偶数分钟执行,比如2,4,6

1-58/2 * * * *         每隔两分钟执行,且是奇数分钟执行,比如3,5,7

0 0 1,5,10 * *        每个月1号,5号,10号执行

0 0 1-5 * *            每个月 1到5号执行

3.Demo

(1)执行命令: crontab -e

(2)输入 * * * * * date >> /tmp/date.log

(3)保存后,系统会提示crontab: installing new crontab

(4)执行命令: tail -f /tmp/date.log 就能看到系统每分钟都会打印出时间到date.log这个文件

  • 用Crontab+Shell实现实时监控系统

在系统网站的运营过程中,我们需要知道网站或者系统是否24小时在正常运行,一般系统正常运作需要两个东西在支持,一个是web服务器,一个是数据库。

那么我们就需要实时的监控web服务器和数据库是否在运行。下面我们以apache服务器和mysql数据库作为例子来分析如何实现需求。

1.监控mysql数据库是否正常运行

正常情况我们登录一台Linux服务器后,想要查看当前服务器Mysql是否在运行,我们会执行 pgrep mysql查看,如果有打印出进程ID说明mysql是正常在运行的。

根据这个原理可以写出如下SHELL脚本:

#!/bin/bash
check=`pgrep mysql`
if [ -n "$check" ]; then
    exit
else
   date=$(date +"%Y-%m-%d %H:%M:%S")
   /etc/init.d/mysqld restart
   echo 'mysqld exception at' $date 'and restart '
fi

判断是否存在进程 mysql,存在则正常不存在则说明mysql可能挂了,可以执行重启操作,当然你也可以直接发送邮件到指定邮箱。2.监控apache是否正常运行根据监控mysql的经验,我们可以这样写SHELL脚本:

#!/bin/bash

check=`pgrep httpd`

if [ -n "$check" ]; then

exit

else

date=$(date +"%Y-%m-%d %H:%M:%S")

/etc/init.d/httpd restart

echo ‘apache exception at‘ $date ‘and restart ‘

fi

还有种可能是apache可能不在同一台服务器上,则可以用下面的SHELL脚本实现:

if curl -m 10 -G localhost:81 > /dev/null 2>&1
then
	echo 'server is running'
else
     if ping -c 1 localhost > /dev/null 2>&1
      then
         echo 'server exception but ip ping success'
      fi
fi

原理类似于直接访问URL判断是否有响应,分别判断apache端口和服务器IP。如果系统访问无响应有可能是apache服务挂了,还有一种可能是服务器挂了,所以用PING 的方式来判断服务器是否正常。

最后一步,就是把以上两个脚本添加到定时任务中去执行:

crontab -e

* * * * * sh /alidata/test/mysqlListener.sh >> /var/log/mysqlL.log

* * * * * sh /alidata/test/httpdListener.sh >> /var/log/httpdL.log

这样就每分钟都会去判断apache和mysql是否正常运行,基本达到实时监控,如果加上邮件通知的话,只要系统出现故障,一分钟之内就能收到邮件通知。

时间: 2024-10-18 21:36:19

Linux系统下的定时任务Crontab的相关文章

Linux系统下定时任务软件种类

Linux系统下定时任务软件种类 严格的说,Linux系统下的定时任务软件真的不少,例如:at,crontab,anacron. at:适合仅执行一次就结束的调度任务命令,例如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务.要执行at命令,还需要启动一个名为atd的服务才行,在老男孩的工作中从来都不会有需求用这个.因此,建议大家不要深入研究了,到此我们讲解到此为止即可. [[email protected] study_20160420]# chkconfig --list

关于linux系统下CRONTAB运行python脚本不生效

关于linux系统下CRONTAB运行python脚本不生效 运维中难免会在定时任务中同时使用shell和python脚本,shell脚本不生效大部分为环境变量的问题,在脚本前增加环境变量基本能解决,如加上 source /etc/profile. 最近遇到python脚本不能执行的情况,状态描述,如目录/home/script/SH下有脚本Qdd.py和download.sh,手动是可以执行的是生效的,如下: python3 /home/script/SH/Qdd.py 放到定时任务cront

Linux系统下的shutdown命令用于安全的关闭/重启计算机

Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执行shutdown命令时,系统会给每个终端(用户)发送一条屏显,提示关机操作.定时关机只需要一个简单的参数,既可以是倒计时,也可以是确切的时间. 命令格式 1 shutdown [选项] [时间] [消息] 并有如下选项: - k 不执行任何关机操作,只发出警告信息给所有用户 - r 重新启动计算机 - h 关机并彻底断电 - f 快速关机且重启动时跳过fsck

第九章 Linux系统下分区、格式化磁盘,学会挂载和卸载磁盘

1. 请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?/dev/hda, /dev/hdb 是 IDE借口硬盘的块文件. /dev/hda  第一块IDE磁盘 : /dev/hdb 第二块IDE磁盘 /dev/sda, /dev/sdb 是SCSI接口硬盘的块文件. /dev/sda 第一块SCSI磁盘 :/dev/sdb 第二块SCSI磁盘 2. 为什么 du -b /etc/passwd  和 du -k  /etc/

在虚拟机的Linux系统下安装wineqq

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 本文参考教程:http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7688&extra=page%3D1 WineQQ下载地址:http://pan.baidu.com/s/1c2FSTsk qq是一款国内非常著名的聊天工具,但是在腾讯的官网并没有Linux操作系统下的qq安装版本,但是我们也有办法在Linux系统下安装qq,下面我们实现在Linux安装w

linux系统下运行java项目的脚本编写

本文主要讲linux系统下运行jar包,至于如何打包jar包,放到linux系统下可以参考其他的博客. 在linux系统下运行jar包的命令如下: 1.java -jar xxxxx.jar  // 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 2.java -jar xxxxx.jar &   //当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. 3.nohup Java -jar xxxxxx.jar &  //意思是不挂断运行命令,当账户退

Linux系统下利用文件创建文件系统

在Linux系统下利用文件创建文件系统,小伙伴们乍一听也许会有点不知道其意义何在. 其实不然,利用文件创建文件系统还是相当有实用价值的 首先我们在做一些测试时,不想使用实际的磁盘分区时,我们可以利用文件创建文件系统,然后在其上做一些测试: 其次,我们将数据写在利用文件创建的文件系统上,必要时,我们可以将文件拷走,实现数据的便捷迁移,而在磁盘分区上的数据我们想拷走就比较麻烦了. 废话不多说,下面就来做个小实验,来演示下其步奏: 首先我们在/testdir测试目录下创建一个partfile文件 利用

linux系统下文件查找

在我们实际应用中,经常需要查找某个特定的文件,或者根据文件的某个特定属性进行查找,今天小菜就给大家分享一下,linux系统下文件查找的两大利器: 1,locate:非实时查找(基于预先生成的数据库查找):模糊匹配:速度快 2,find:实时查找(遍历目录中的所有文件完成查找):精确匹配,支持众多查找标准:速度慢 一.locate 查询系统上预先生成的文件索引数据库:/var/lib/mlocate/mlocate.db 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务) 管

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*