【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

bash 复制代码
*/1 * * * * ls -l /home > /tmp/to.txt

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

bash 复制代码
*/1 * * * * date >> /tmp/mydate

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

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

2)、执行指令

bash 复制代码
*/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、完整启动命令、归属链路

相关推荐
A小辣椒10 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒13 小时前
TShark:基础知识
linux
AlfredZhao16 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux