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

相关推荐
DFT计算杂谈1 小时前
服务器通过pip安装Kimi Code CLI 和使用
运维·服务器·pip
杨云龙UP5 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
happymagic6 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
风曦Kisaki7 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
Dr.kangder7 小时前
嵌入式处理器仿真技术——Hypervisor 原理与实践
服务器·嵌入式硬件·架构·嵌入式
_艾伦 耶格尔.7 小时前
基础I/O
linux
星蓝_starblue9 小时前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
fb_1234510 小时前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
深念Y10 小时前
随身WiFi设备记录
linux·嵌入式·无线·射频·随身wifi·zte
柒号华仔11 小时前
【LINUX】Linux从闹钟到高精度定时器的实现
linux