Linux定时(计划)任务

   定时计划任务概念及分类

        我们每天都要干很多事情,例如上下班打卡,参加会议,还有有仪式感的约会,纪念日等。很多事情害怕自己忘掉,便用便签记录。但是记录便签会很不方便,丢了或者不能及时提醒你。而用计算机则会方便很多。今天我们就为大家介绍一下linux中的定时计划任务

  首先通过概念我们可以将定时计划任务分为两类:

  • 定时执行一次任务:at ,(batch)
  • 周期性的运行某任务:crontab

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘,日志清理等。/etc/crontab文件就是系统任务调度的配置文件
用户任务调度:用户定期要执行的工作,比如用户数据备份,定时邮箱提醒等。用户可以使用crontab工具来定制自己的任务计划。所有用户定义的crontab文件都被保存在/var/spool/cron目录中

   定时任务语法及配置文件详解

    所有的定时任务在执行结束后都会通过邮箱通知,所以先介绍一下 mail

mail命令
      使用mail命令时,首先必须将sendmail启动。service start sendmail
      可能有些用户没有安装,通过 yum install sendmail -y 安装

选项

选项 作用
- s 表明邮件主题
- c 写明抄送地址
- b 写明密送地址

三种常见的发信格式

mail -s test user1@user1.com   //第一种,直接在shell中编辑,编辑完按Ctrl D结束   

echo "mail content" | mail -s test user1@user1.com   //第二种,使用管道方法    

mail -s test user1@user1.com < file   //第三种,将file文件内容作为邮件发信    

   1.at命令

       语法

at  选项  参数

       选项

选项 作用
- V 印出版本编号
- q 使用指定的伫列(queue)来存储,at的资料是存放在所谓的queue中,使用者可以同时使用多个queue,,而queue的编号为a-z,A-Z共52个
- m 即使程序/指令执行完成后没有输出结果,也要寄封信给使用者
- f file 读入预先写好的命令档。使用者不一定使用交互模式来输入,可以经所有的指定写入档案后再一次性读入
- l 列出所有指定(也可以使用atq)
- d 删除指定(也可以用atrm)
- v 列出所有已完成但未删除的指定

      相关命令

batch:在系统负荷允许的情况下执行at任务,即就是在系统空闲时才执行at任务

      示例

    启动服务

/etc/init.d/atd start

    1分钟后执行

at now +1 minutes   

    查看所有指定

atq   // at -l

    删除指定

atrm number   // number为指定对应的数字

   2.crond命令

Linux系统是由cron(crond)系统服务来控制的。Linux系统上原本就有很多计划性工作,因此crond这个系统服务是默认启动的,为用户提供的使用命令crontab

     查看配置文件:

cat /etc/crontab

在这里插入图片描述
    时间表示法:

(1)特定值

  • 给定时间点的有效取值范围内

(2)*

  • 给定时间点的有效取值范围内,表示“所有”

(3)离散取值

  • 在时间点上使用逗号分隔:#,#,#

(4)连续取值

  • 在时间点上使用 - 来链接:#-#

(5)表示步长

  • /# ,#即步长,eg:在分钟上定义,/2 :即为每两分钟执行一次

    语法结构图
在这里插入图片描述
    如果没有安装服务则:yum install crontab -y

    服务操作说明

service crond start     //启动服务
service crond stop     //关闭服务
service crond restart  //重启服务
service crond reload  //重新载入配置
service crond status  //启动服务

    选项

选项 作用
- e 编辑任务
- l 列出所有任务
- r 移除所有任务;即删除/ver/spool/cron/USERNAME文件
- i 在使用 - r 时提醒用户确认
- u user root可以指定用户管理cron任务

    实例

* * * * *  command      每一分钟执行一次

15 10  * * *   每天上午1015执行

15,35  10  * * * 每天上午10点的15分和35分执行

*/30  21-23  * * * /etc/init.d/smb  restart每天晚上21点到23点,每半小时执行一次重启smb    

猜你喜欢

转载自blog.csdn.net/weixin_45440548/article/details/105404637