Linux--定时任务at,crontab

Linux中定时任务一般分为两种,短期的和周期的任务。

at,atq,atrm命令

启动atd服务:

[root@linux ~]# /etc/init.d/atd restart
Stopping atd: [FAILED]
Starting atd: [ OK ]

# 设定一下开机时就启动
[root@linux ~]# chkconfig --level 35 atd on

at命令用于指定只执行一次的任务。它的工作流程如下:

  • 查看/etc/at.allow和/etc/at.deny两个文件,判断用户是否可以使用at;
  • 若两个文件都不存在,就只有root用户可以使用at命令。

若不想某一用户使用at命令,可以在/etc/at.deny中添加用户账号。

[root@linux ~]# at [-m] TIME
参数:
-m :当 at 的工作完成后,以 email 的方式通知使用者该工作已完成。
TIME:什么时候执行工作

TIME的时间格式有:

时间格式描述例子
HH:MM在HH:MM时刻执行ex> 04:00
HH:MM YYYY-MM-DD在某年某月某天某时刻执行ex> 04:00 2020-03-03
HH:MM[am|pm] [Month] [Date]在某年某月某天某时刻执行ex> 04pm December 3
HH:MM[am|pm] + number [minutes|hours|days|weeks]在某一个时间点再加上一段时间ex> now + 5 minutes ex> 04pm + 3 days

实例:

#5分钟后将/root/.bashrc寄给root这个用户
[root@localhost at]# at now + 5 minutes
at> /bin/mail root -s 'test' < /root/.bashrc
at> <EOT>   #ctrl+d结束
job 1 at 2020-02-10 13:17  #第一个任务在这个时间点完成

与at相关命令atq和atrm,用于移除任务:

#查看有多少个at命令
[root@localhost at]# atq
2       2020-02-10 13:23 a root
#移除第2个工作项
[root@localhost at]# atrm 2
#没有任何信息,表示工作被移除
[root@localhost at]# atq

crontab命令

crontab是用来定义周期性的任务的,与at相同的是用户是否可以使用参考/etc/cron.allow和/etc/cron.deny文件。

[root@linux ~]# crontab [-u username] [-l|-e|-r]
参数:
-u :只有 root 才能进行这个任务,亦即帮其它使用者建立/移除 crontab;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除 crontab 的工作内容

实例:

[dmtsai@linux ~]$ crontab -e
# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 时 日 月 周 |<==============指令串========================>|

时间参数的设定:

时间参数数字范围
分钟0-59
小时0-23
日期1-31
月份1-12
0-7,0和7都代表周日

还有一些特殊字符:

特殊字符代表意义
*代表任何时刻,若周、月、日都是*,表示不论何月何周何日都执行后续指令
代表分隔时段的意思
0 3,6 * * * command 表示3点和6点执行
-代表一段时间范围
20 8-12 * * * command 表示8点到12点之间每20分钟执行一次
/n每隔n单位间隔
*/5 * * * * command 表示每隔5分钟一次

除了使用crontab -e之外,还可以直接编辑/etc/crontab文件来设定定时任务。cron这个服务每分钟回去读取一次/etc/crontab和/var/spool/cron里面的数据,自动执行任务。

[root@localhost at]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root  #任务结束后给该用户发送结果
HOME=/
 
# For details see man 4 crontabs
 
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

在/etc/crontab中下达指定有两种方式,一是直接写下指令,一是使用目录来规划:

  • 指令型态
01 * * * * dmtsai mail -s "testing" kiki < /home/dmtsai/test.txt
#以 dmtsai 这个使用者的身份,在每小时执行一次 mail 指令。
  • 目录规划
*/5 * * * * root run-parts /root/runcron
#建立一个 /root/runcron 的目录,将要每隔五分钟执行的可执行文件都写到该目录下, 就可
#以让系统每五分钟执行一次该目录下的所有可执行文件

相对于crontab -e命令,直接编辑/etc/crontab进行指令的下达会更加方便一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值