Linux定时任务at和crontab

1:定时任务

定时任务主要用于周期性的执行某些特定的任务,比如每天凌晨清理数据,每天中午统计登录人数等。程序猿总不能守着计算机到凌晨手动清理数据吧,或者总不能每隔半个小时统计一下在线人数吧。

在Linux系统下存在两种定时任务:

  1. at定时任务
  2. crontab定时任务调度

可以提前编码,系统到达执行时间便会自动执行代码,无需手动执行。

2:定时任务at

at作业 :将来某一时间要执行的作业列表,该任务只能被执行一次

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检测作业队列来运行。
  2. 默认情况下,atd收获进程60s检查作业队列一次,有作业会检查作业运行时间,如果运行时间和当前时间匹配,则运行此作业。
  3. at命令是一次性定时计划任务,执行完一次任务后就不会再执行。
  4. 在使用at命令时,一定要保证atd进程启动。
at任务解释
ps -ef | grep -n atd检测atd是否在运行
atq 或者 at-l查看定时任务队列
atrm 任务ID 或者 at - d 任务ID删除定时任务
at -v显示任务将被执行的时间
at-c打印任务内容到标准输出

实际操作:

#1:半个小时后将在线用户写道user.txt文件中
[root@centos7 home]# at now + 30minutes 
at> who >> user.txt #此处CTRL+D退出
[root@centos7 home]# at -l
9	Tue May 17 18:36:00 2022 a root

#2:删除at任务
[root@centos7 home]# at -d 9
[root@centos7 home]# at -l  #可以看到刚才的定时任务已经删除

#3:明天下午五点,输出时间到指定位置
[root@centos7 home]# at 5pm tomorrow
at> date > /home/date.txt
[root@centos7 home]# atq
6 at Thu Apr 14 17:00:00 2022

#4:两天后下午五点执行脚本
[root@centos7 home]# at 5pm + 2 days  
at> sh test.sh              
1 at Fri Apr 15 17:00:00 2022

关于at任务的时间规定:

midnight noon teatime比较模糊的时间来指定
AM上午 PM下午 12pm 下午12点 12小时制
month day 或 mm/dd/yy 或 dd.mm.yy 04:00 2021-02-12日期需要跟在时间后
now + count time-units now + 5 minutes 当前时间五分钟后 now当前时间 time-units时间单位 单位为minutes,hours,days,weeks count为时间数量
today tomorrow今天 明天
hh:mm(小时:分钟) 04:00 表示凌晨四点当天执行,假如时间过去,则第二天执行

3:定时任务调度crontab

定时任务调度:指系统在某个时间执行的特定的命令或者程序

cron作业的分类:

  1. 系统cron作业:cron是一个守护进程,是一个标准的后台服 务程序,可以使系统周期性地执行某项任务。cron的配置文件为“/etc/crontab”

  2. 用户cron作业:
    用户作业创建方式:
    方式1:

    第一步:首先利用vi创建cron作业列表文件,文件命名为filename (这个文件名随意起)

    第二步:按规定格式创建好任务文件

    第三步:用命令行crontab [ -u user] filename把它写入 “/var/spool/cron/username”文件中

    方式2:

    使用crontab –e直接编辑任务

crond任务解释
crontab -e编辑crontab定时任务
crontab -l查询crontab任务
crontab -r删除当前用户所有的crontab任务
符号*代表全部功能
第一个*一小时当中的第几分钟 [0-59]
第二个*一天当中的第几小时 [0-23]
第三个*一月当中的第几天 [1-31]
第四个*一年当中的第几月 [1-12]
第五个*一周当中的星期几 [0-7] (0,7代表周天)
1)每天早上9点和下午5点将在线人数保存到num文件中;
 	 0  9,17  *   *   *    who|wc –l > num 
(2)周一至周五每2小时进行一次备份pub文件数据到data文件中;
     0  */2   *   *   1-5  cp pub data
(3)每周五下午530删除临时文件(/temp目录中的文件);
     30 17    *   *   5    rm -rf /temp/*4)每月1830发消息给所有用户,要求提交上月的月度工作总结。
     30  8    1   *   *    wall   "Please submit last month’s work summary."

at VS cron
at和cron都可以提交作业,但cron主要用来提交不断循环执行的作业,at用来提交一段时间后执行的作业,执行完就删除作业。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值