Linux - 创建定时任务

时间:2022-09-05 19:17:36

crontab命令

用来创建周期性定时任务

crontab {-l|-r|-e}

-l 显示当前的 crontab

-r 删除当前的 crontab

-e 使用编辑器编辑当前 crontab 文件

输入 crontab - e 命令进入 crontab 文件,按键盘 i、o、a 任意一个键进入编辑状态,可以对文件进行修改。

字段含义及范围

分钟(0-59) --- 小时(0-23) --- 天(1-31) --- 月(1-12) --- 星期(0-7) --- 命令/脚本

以上各个字段可以使用以下特殊字符:

  • 星号(*) :代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,) :可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-) :可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/) :可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
  • 同时正斜线可以和星号一起使用,例如*/10,如果用在 minute 字段,表示每十分钟执行一次。

完成 crontab 任务创建后,会提示:“crontab: installing new crontab”

注意:在完成编辑以后,要重新启动 cron 进程,crontab 服务操作说明:

~# /etc/init.d/cron restart //重启服务

~# /etc/init.d/cron start //启动服务

~# /etc/init.d/cron stop //关闭服务

~# /etc/init.d/cron reload //重新载入配置

示例

每周一和三的17点执行脚本:* 17 * * 1,3 [脚本]

工作日下班后自动关机: * 18 * * 1-5 /usr/bin/shudown -h now

at命令

用来创建一次性定时任务(atd服务必须启动)

at -l 或 atq //查看 at 创建的任务

atrm job-id //删除已经创建的任务。job-id 是通过at -l 或 atq 查询到的任务编号。

指定时间

例如,指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2016年11月08日)

  • 绝对计时方法:

    HH:MM --- at 17:30

    HH:MM YY-MM-DD --- at 17:30 16-11-08
  • 相对计时方法:

    now+n minutes --- at now+180 minutes

    mow+n hours --- at now+3 hours

    mow+n days

任务编写

执行指定时间后,就可以编写在这个时间的定时任务内容了,按ctrl+d键退出

示例

$ ls -l
总用量 4
-rw-rw-r--. 1 Anliven Anliven 83 11月 8 15:40 test.sh
$
$ cat test.sh
#!/usr/bin/bash
echo "this is a test for at job!" >> output.log
date >> output.log
$
$ at now+1 minutes
at> sh ./test.sh
at> <EOT>
job 14 at Tue Nov 8 15:45:00 2016
$
$ ls -l
总用量 8
-rw-rw-r--. 1 Anliven Anliven 70 11月 8 15:45 output.log
-rw-rw-r--. 1 Anliven Anliven 83 11月 8 15:40 test.sh
$
$ cat output.log
this is a test for at job!
2016年 11月 08日 星期二 15:45:00 CST
$