【Linux】定时任务调度

一、crond任务调度

1.概述 

使用crontab 进行定时任务的设置,让后台进程crond执行定时任务

crond:一种后台进程,它每分钟检查一次:看看有没有到时间要执行的任务

任务调度:

是指让系统在某个时间执行特定的命令或程序

任务调度分类:

1.系统工作:有些重要的工作需要系统循环去执行,比如杀毒等

2.个别用户工作:用户想要执行的某些操作,必须备份文件

2.基本语法

2.1 crontab

crontab [选项]

常用选项:

2.2 参数说明

格式

* * * * * 指令/脚本

五个占位符(每一位含义)

通用符号含义

应用实例

45 22 * * * 命令        -》        每月每日22:45执行命令

0 17 * * 1 命令        -》        每周一17:00执行命令

0 5 1,15 * * 命令        -》        每月1号、15号 5:00 执行命令

40 4 * * 1-5 命令        -》        周一到周五4:40执行命令

*/10 4 * * * 命令        -》        每天凌晨四点开始,每隔十分钟执行一次

0 0 1,15 * 1 命令        -》        每月1号、15号 且 是周一,0:00执行命令

2.3 crond相关指令

crontab -r:终止当前调度

crontab -l:列出当前有哪些任务调度

service crond restart:重启调度任务

3.应用实例

crontab使用逻辑:

eg1:每小时每分钟执行ls -l /home > /tmp/to.txt

*/1 * * * * ls -l /home > /tmp/to.txt

eg2:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate

*/1 * * * * date >> /tmp/mydate

eg3:每隔一分钟,就将当前日期和日历追加到/home/mycal中

1)、创建脚本并加上可执行权限

2)、执行指令

*/1 * * * * my.py

after 1min

eg4:每天凌晨2:00将mysql数据库testdb ,备份到文件中。(指令为mysqldump -u root -p 密码 数据库      》》  /home/db.bak   )

二、at定时任务

1.基本介绍:

(1)at命令是一次性定时任务计划,at的后台进程atd会每隔60s检查一次作业队列,有作业时,检查作业的运行时间,若时间匹配,则运行该任务。

(2)at命令是一次性定时任务计划,任务执行一次后便移出作业队列,不再执行

(3)在使用at命令前,要保证atd进程已经启动,可以用相关命令来查看 (ps -ef | grep atd)

图示:

2.at命令格式

创建

at [选项] [时间]

Ctrl+D 结束at命令的输入

删除

atrm 编号

(1)常用选项:

(2)at时间定义格式

at指定时间的方法:

①.接受在当天的Hour:Minute(小时:分钟)式的时间指定,假如该时间已经过去,那么就放在第二天执行。例如:04:00

②.使用midnight、noon、teatime等比较模糊的词语

③.采用十二小时计时制,即在时间后面加上AM、PM,例如:12PM

④、指定命令执行的具体日期,指定格式为month day 或 month/day/year 或 day.month.year,指定的日期需要跟在指定时间的后面。例如:04:00 2026/5/24

⑤.相对计时法,指定格式为:now + count time-units,now(代表当前时间)、count(时间的数量)、time-units(时间单位,可以是minutes/hours/days/weeks)。例如:now + 5 minutes

⑥.直接用today、tomorrow指定日期

总结:

基本格式为 具体时刻 + 日期

①③->具体时刻指定方法

④⑥->具体日期指定方法

3.应用实例

eg1:2天后的下午5点来执行 /bin/ls /home

eg2:atq命令来查看系统之中没有被执行的定时任务

eg3:明天17:00,输出具体时间到执行文件/home/time.txt

 eg4:删除已经设置的任务

eg5:1分钟后,执行sl

注:想让atd执行sl指令,将小火车打印到显示屏上,需要做如下几件事

1.将sl执行结果重定向到当前终端,使用tty指令可查询当前终端对应的文件

/usr/bin/sl > /dev/pts/0

2.改变终端文件的权限(默认情况下other无法向终端文件写入数据)

3.在环境变量TERM设置终端类型

export TERM=xterm

原因:

sl这类程序不是纯文本打印,依赖终端驱动:
①必须识别合法终端类型 TERM=xterm
②进程拥有终端写入权限
③文件描述符0、1输出句柄指向真实终端设备

当我们使用at在后台执行sl时,该进程环境变量中无TREM类型、文件描述符0、1指向位置不知道、且还存在对于终端文件写入时的权限问题


 

注:

ps(process status) 查看进程状态

1.用法一:ps aux  =》查看所有进程完整信息

参数说明

a:显示所有终端下全部用户进程        

u:以用户维度展示,附带 CPU、内存占用等详情
x:包含无终端关联的后台进程

2.用法二:ps -ef =》查看完整进程树,侧重父子进程关系

参数说明

-e:列出系统全部进程
-f:完整格式展示,附带父进程 ID、启动时间

3.区别:

ps aux
侧重资源占用:用户、CPU 占比、内存占比、进程状态、资源开销


ps -ef
侧重进程关系:PID、父 PID (PPID)、UID、完整启动命令、归属链路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值