Linux定时任务调度

1.crond任务调度

1.1 命令使用

crontab [-u username]    # 省略用户表表示操作当前用户的crontab
    -e      (编辑crontab定时任务)
    -l      (查询crontab任务)
    -r      (删除当前用户所有的crontab任务)
service crond restart 	(重启任务调度)

1.2 参数细节说明

5个占位符的说明(分、时、日、月、周五种)

项目含义范围
第一个 “*”一小时当中的第几分钟0-59
第二个 “*”一天当中的第几小时0-23
第三个 “*”一个月当中的第几天1-31
第四个 “*”一年当中的第几月1-12
第五个 “*”一周当中的星期几0-7(0和7都代表星期日)

1.3 特殊符号说明

下表中的command为命令或者脚本

特殊符号含义
*代表任何时间。比如第一个 “*” 就表示一小时中每分钟都执行一次的意思
代表不连续的时间。比如 “0 8,12,16 * * * command” ,代表每天的8点0分,12点0分,16点0分都执行一次命令
-代表连续的时间范围。比如 “0 5 * * 1-6command ,代表周一到周六的凌晨5点0分执行命令
*/n代表每隔多久执行一次。比如 “*/10 * * * * command” ,代表每隔10分钟执行一次

1.4 实例

  • 每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
  • 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
  • 每天凌晨2点将mysql数据库testdb,备份到文件中
# 提示:备份指令为mysqldump -u root -p 密码 数据库 > /home/db.bak
0 2 * * * mysqldump -u root -p root testdb > /home/db.bak

2.at定时任务

2.1 查看服务是否安装

由于 at 命令需要其守护进程 atd 在后台为其提供服务,所以需要先保证其已经安装

下面为CentOs7的操作:

[zhangxh@zhangzzxh ~]$ systemctl list-unit-files | grep atd
atd.service                                   enabled # 表示已安装
rpc-statd-notify.service                      static  
rpc-statd.service                             static  

2.2 查看服务是否运行

[zhangxh@zhangzzxh ~]$ service atd status
...
# 显示active表示正在运行
   Active: active (running) since 一 2021-03-08 21:15:06 CST; 3 weeks 0 days ago
...

2.3 at命令选项

选项含义
-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-latq的别名,显示任务列表
-datrm的别名,取消一个at 任务,后面跟任务编号
-v显示任务将被执行的时间
-c打印任务的内容到标准输出,-c 后面接任务编号
-V显示版本信息
-q <队列>使用指定的队列
-f <文件>从指定文件读入任务而不是标准输入读入
-t <时间参数>以时间参数的形式提交要运行的任务

2.4 at时间定义

  1. HH:MM 如: at 02:30 (在2点30)
  2. HH:MM YYYY-MM-DD 如:at 8:00 2020-01-01 (在2020年1月1日8点)
  3. HH:MM[am | pm] [month] [date] 如:at 8:00 Oct 1 (在10月1号的8点 )
  4. HHlMM[am | pm] + number [minutes | hours | days | weeks] 如:at 8:00 + 1days (在一天后的8点)
  5. 最常用的的一个时间:now + 时间 比如:at now + 10 minutes (在十分钟后),at now + 1 days (在一天后)

2.5 实例

# 明天17点,输出时间到指定文件
[zhangxh@zhangzzxh ~]$ at 5pm tomorrow
at> date > /root/date100.log<EOT>
# 命令输入完成后,ctrl + d 结束输入,并提示我们该任务编号为4
job 4 at Wed Mar 31 17:00:00 2021

[zhangxh@zhangzzxh ~]$ atq
4	Wed Mar 31 17:00:00 2021 a zhangxh

# 删除已经设置的任务
[zhangxh@zhangzzxh ~]$ atrm 4

3.两种任务比较

  1. crond 任务调度比较适合周而复始执行的工作,比如病毒扫描,数据库备份等。
  2. at 命令是用来执行一次性任务,比如要在二十分钟后重启,要在 2 分钟后启动一个可执行程序,或者在一天后执行一个脚本。适合应对突发性和临时性的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值