Linux——任务计划


任务计划的目的就是让任务能够在未来执行。因为如果当前时间执行某一个任务的时候,任务可能会消耗大量资源,影响线上用户的使用体验。所以我们需要使用任务计划定时执行任务。

一次性调度执行-at

只在未来的一个时间点执行命令。

语法格式

语法格式:at <TIMESPEC>
TIMESPEC示例:

  • now+5min :5分钟后
  • teatime(下午茶时间)、tomorrow
  • noon+4days 第四天中午

实际使用

  • 输入at <TIMESPEC>
  • 输入命令,可以多行多个命令
  • 命令输入完成之后ctrl +D退出编辑
  • 等待命令执行
  • 可以使用atq查看计划汇总的任务
[root@localhost ~]# at now +2min
at> useradd uuuuu
at> <EOT>
job 2 at Thu Feb  8 21:20:00 2024
您在 /var/spool/mail/root 中有邮件
[root@localhost ~]# atq
2       Thu Feb  8 21:20:00 2024 a root
[root@localhost ~]# id uuuuu
uid=1003(uuuuu) gid=1003(uuuuu)=1003(uuuuu)
您在 /var/spool/mail/root 中有新邮件

循环调度执行-cron

在未来的多个时间点反复执行命令。

简介

cron是循环的意思,cron的概念和crontab是不可分割的。
crontab是一个命令,用于设置周期性的被执行的指令。该命令从标准输入命令读取指令,并将其存放于crontab文件中,以供之后读取和执行。
crontab文件中以表格的形式存储着多条定时执行的命令。

查看进程状态

查看cron程序是否还在运行
如果已经不运行了,肯定是不能执行循环任务的。
crond程序的运行是计划任务执行的根本。

ps axu | grep crond

或者

systemctl status crond.service

示例:

[root@localhost ~]# ps axu | grep crond
root       1411  0.0  0.0 126384  1688 ?        Ss   20:07   0:01 /usr/sbin/crond -n
root     116887  0.0  0.0 112824   980 pts/0    R+   21:32   0:00 grep --color=auto crond

[root@localhost ~]# systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2024-02-08 20:07:55 CST; 1h 27min ago
 Main PID: 1411 (crond)
    Tasks: 1
   CGroup: /system.slice/crond.service
           └─1411 /usr/sbin/crond -n

208 20:07:55 localhost.localdomain systemd[1]: Started Command Scheduler.
208 20:07:56 localhost.localdomain crond[1411]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 65% if used.)
208 20:08:05 localhost.localdomain crond[1411]: (CRON) INFO (running with inotify support)

cron执行示例

计划文件存储位置

  • 计划文件存储位置:/var/spool/cron

管理 cron命令

  • 创建计划:crontab -e 计划的执行者默认是谁创建谁执行,一行代表一个命令。

执行crontab -e 命令之后就进入一个编译器,用来编写文件命令,命令的格式是:* * * * * command
前五个星号分别代表:分、时、日、月、周(表示周的时候,1-6表示周一到周六,0或7表示周日)
command:代表要执行的命令

如果设置日和月的时候就不要设置周了,如果设置了周就不要设置日和月了。

5 1 15 3 * 命令

表示每年的3月15号1点5分都执行这个命令

5 1 15 * * 命令

表示每月的15号1点5分都执行这个命令(如果为*代表任意)

5 1 * * * 命令

表示每天1点5分都执行这个命令

* * * * * 命令

表示每分钟都执行

5 * * * * 命令

表示每小时的5分都执行这个命令

5 * * * * 命令

表示每小时的5分都执行这个命令

*/5 * * * * 命令

表示每隔5分都执行这个命令

5 1 1.4.6 * * 命令

表示每月的1号4号和6号的1点5分都执行这个命令(如果为*代表任意)

5 1 1-6 * * 命令

表示每月的1号到6号的1点5分都执行这个命令(如果为*代表任意)

0 * * * * 命令

每小时的0分执行任务。

0 2 * * 5 命令

每周五的2点执行。

0 2 2 6 5 命令

表示6越号+6月的每周五 都执行命令。

  • 查询计划:crontab -l,查询创建成功的计划任务列表
    任务计划执行完成之后会通过邮件将消息传递给你
  • 删除计划:crontab -r
  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值