【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、完整启动命令、归属链路

相关推荐
2401_868534784 小时前
分析RTOS与Linux有什么区别
linux·运维·服务器
玛丽莲茼蒿4 小时前
Linux/Unix学习笔记(四)—— 进程管理
linux·学习·unix
Peace5 小时前
【Nginx】
linux·运维·nginx
网络与设备以及操作系统学习使用者6 小时前
Linux与Windows核心差异深度解析
linux·运维·网络·windows·学习
筠筠喵呜喵6 小时前
Linux CPU性能优化:D状态和Z状态排查与处理
linux·服务器·性能优化
Flash.kkl7 小时前
网络层协议IP、数据链路层、NAT详解
服务器·网络·网络协议·tcp/ip
张小姐的猫8 小时前
【Linux】多线程 —— 线程同步 | 生产者消费者模型 | POSIX 信号量
linux·运维·服务器
tedcloud1239 小时前
academic-research-skills部署教程:构建AI辅助科研环境
服务器·人工智能·word·excel·dreamweaver
Ether IC Verifier10 小时前
TCP 重传机制详解
服务器·网络·网络协议·tcp/ip·php
随便做点啥10 小时前
Intel Arc B60 Qwen3-Omni-30B-A3B 压测报告
服务器·经验分享