计划任务
发表于:2025-08-06 | 分类: Linux

一、计划任务

1 什么是计划任务?

定义:在特定时间自动执行预先设定的命令或脚本。

核心用途:

  • 延迟执行(如30秒后重启服务)。
  • 周期性任务(如每日备份数据库、每小时同步数据)。
  • 脱机任务(如无人值守服务器运维)。

2.Linux中的两大工具

工具 适用场景 时间粒度 特点
at 一次性/延迟任务 秒级精准 简单、轻量级,无需持久化守护进程
cron 周期性重复任务 分钟级调度 复杂时间表达式,需长期运行守护进程
1
systemctl status atd.service #用于查看 Linux 系统中 `atd`服务(定时任务调度服务)当前状态的命令

image-20250806183714449

1
systemctl status crond.service #用于查看 Linux 系统中 crond 服务(定时任务调度守护进程)的当前运行状态及相关信息

image-20250806184052254

二、at命令

1.基本语法
1
at [选项] 时间表达式 [命令]

提交任务:输入命令后按 Ctrl+D 提交。

查看任务: atq (列出所有任务)。

删除任务: atrm <任务ID> 。

1
2
3
4
5
6
7
8
9
10
11
#时间格式
now # 立即执行
now + 5min # 5分钟后
02:30 tomorrow/today # 次日2:30
2025-12-31 23:59 # 绝对时间

#复杂时间格式
now :立即执行
today / tomorrow :当天/次日
YYYY-MM-DD HH:MM :绝对时间
+N days / -N minutes :相对时间

date命令解释:

date 的格式化符号以 % 开头,后接特定字母表示不同时间单位。以下是常用符号及其含义:

image-20250806185918349

ctrl+d退出

image-20250806190354258

2.管理命令
命令 作用 示例
atq 查看所有待执行任务 atq -l(详细列表)
atrm 删除任务 atrm 3 (删除ID=3的任务)
at -c 查看任务内容 at -c 5 (查看ID=5的任务)

三、cron命令

1.核心功能

cron 是 Linux/Unix 系统中用于周期性执行任务的守护进程,适合以下场景:

  • 定时备份:每日/每周自动备份数据。

  • 日志清理:定时删除过期日志文件。

  • 数据同步:每小时同步服务器间数据。

  • 监控报警:检测服务状态并发送通知

2.配置文件

系统级: /etc/crontab 编辑模板(所有用户生效)。

语法

1
2
* * * * * 用户名 命令
分钟 小时 日 月 星期
3.时间表达式
字段 允许值 特殊符号
分钟 0-59 * , - , / , ?
小时 0-23 同上
1-31 * , - , / , L
1-12 * , - , /
星期 0-7 * , - , /
1
2
3

0 2 * * * root /usr/bin/systemctl restart nginx #每日凌晨2点重启Nginx
30 4 * * 1-5 user1 /home/user1/backup.sh # 工作日每天4:30备份
4.管理命令详解

crontab 是 cron 的配置工具,用于安装、删除、编辑用户的计划任务。

命令 作业 示例
crontab -e 编辑当前用户任务 crontab -e
crontab -l 列出当前用户任务 crontab -l
crontab -r 删除当前用户所有任务 crontab -r
crontab -u username 管理其他用户任务(需sudo) sudo crontab -e user1
crontab -i 编辑时交互提示 crontab -i
crontab -d 删除用户任务(旧版用法) crontab -d
5.使用方法

场景1:每两个月的工作日的凌晨3点打包备份日志/var/log/secure

可以在/etc/crontab中直接编辑,也可以使用命令crontab -e 进行编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@farrah 桌面]# crontab -e

#该命令执行后的效果有两个问题

1.tar打包命令最好使用相对路径
#修改
0 3 * 1,3,5,7,9,11 1-5 root cd /var/log;tar -zcf /tmp/log.tar.gz secure
#使用';'分割两条命令

2.该命令会覆盖之前的压缩文件,最后只有11月的周五的日志
举个例子,接下来的这个小时,每分钟备份一次
[root@xnha ~]# date
2025年 03月 13日 星期四 11:34:32 EDT
[root@xnha ~]# crontab -e
* 11 13 3 * root cd /var/log;tar -zcf /tmp/log.tar.gz secure
[root@xnha ~]# cd /tmp
[root@xnha tmp]# ll |grep log.tar.gz
-rw-r--r--. 1 root root 1678 3月 13 11:38 log.tar.gz
[root@xnha tmp]# ll |grep log.tar.gz
-rw-r--r--. 1 root root 1678 3月 13 11:39 log.tar.gz
上一篇:
路由转发
下一篇:
进程管理