我们每天都要干很多事情,例如上下班打卡,参加会议,还有有仪式感的约会,纪念日等。很多事情害怕自己忘掉,便用便签记录。但是记录便签会很不方便,丢了或者不能及时提醒你。而用计算机则会方便很多。今天我们就为大家介绍一下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文件内容作为邮件发信

 

   命令

       语法

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

linux的定时任务与java服务的定时任务 linux中定时任务_启动服务


    时间表示法:

(1)特定值

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

(2)*

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

(3)离散取值

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

(4)连续取值

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

(5)表示步长

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

    语法结构图

linux的定时任务与java服务的定时任务 linux中定时任务_配置文件_02


    如果没有安装服务则: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  * * *   每天上午10:15执行

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

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