计划任务
计划任务
一、计划任务概述
1.1什么是计划任务
- 定义:在特定时间自动执行预先设定的命令或脚本。
- 核心用途:
- 延迟执行(如30秒后重启服务)
- 周期性任务(如每日备份数据库、每小时同步数据)
- 脱机任务(如无人值守服务器运维)
1.2Linux中的两大工具

二、at命令详解
2.1 基本语法
at [选项] 时间表达式 [命令] |
- 提交任务:输入命令后按 Ctrl+D 提交。
- 查看任务: atq (列出所有任务)。
- 删除任务: atrm <任务ID> 。
2.2 时间表达式
灵活时间格式:
now # 立即执行 |
示例:
[root@xnha ~]# at now +1 minutes |
显示加载:
[root@xnha ~]# at now +1 minutes |
2.3 实战场景入门
场景1:延迟执行高风险操作-删除
[root@xnha ~]# at now +1 minutes |
场景2:固定时间任务-每天凌晨2点备份数据库
[root@xnha ~]# at 02:00 tomorrow |
date命令解释:
date 的格式化符号以 % 开头,后接特定字母表示不同时间单位。以下是常用符号及其含义:

场景3:复杂时间格式
支持灵活时间描述:
- now :立即执行
- today / tomorrow :当天/次日
- YYYY-MM-DD HH:MM :绝对时间
- +N days / -N minutes :相对时间
示例:2025年12月25日23:59执行关机:
at 23:59 Dec 25 2025 |
2.4 管理命令

[root@xnha ~]# atq |
三、 cron 命令详解
3.1 cron 核心功能
cron 是 Linux/Unix 系统中用于周期性执行任务的守护进程,适合以下场景:
- 定时备份:每日/每周自动备份数据。
- 日志清理:定时删除过期日志文件。
- 数据同步:每小时同步服务器间数据。
- 监控报警:检测服务状态并发送通知。
3.2 配置文件
- 系统级: /etc/crontab 编辑模板(所有用户生效)。
[root@xnha etc]# cat crontab |
语法格式:
* * * * * 用户名 命令
分钟 小时 日 月 星期
3.3 时间表达式
字段说明:

示例:
0 2 * * * root /usr/bin/systemctl restart nginx #每日凌晨2点重启Nginx |
3.3 管理命令详解
crontab 是 cron 的配置工具,用于安装、删除、编辑用户的计划任务。以下是常用命令:

1.crontab -e :编辑任务
功能:打开当前用户的 ~/.crontab 文件,支持 vi 或 nano 编辑器(取决于系统默认)。
使用场景:添加、修改或删除个人定时任务。
示例:
# 添加每日备份任务
crontab -e
0 3 * * * touch /tmp/test2.txt
2.crontab -l :列出任务
功能:显示当前用户的所有计划任务(格式化输出)。
示例:
[root@xnha ~]# crontab -l
0 3 * * * touch /tmp/test2.txt
3.crontab -r :删除任务
功能:永久删除当前用户的所有计划任务。
示例:
crontab -r
4.crontab -u username :管理其他用户
功能:需要 sudo 权限,用于查看/编辑其他用户的任务。
示例:
[root@xnha ~]# crontab -u user777 -e
no crontab for user777 - using an empty one
crontab: installing new crontab
[root@xnha ~]# crontab -u user777 -l
0 3 * * * touch /tmp/user777
3.4 使用方法
场景1:每两个月的工作日的凌晨3点打包备份日志/var/log/secure
可以在/etc/crontab中直接编辑,也可以使用命令crontab -e 进行编辑
# 编辑用户级crontab |
四、 at vs cron 对比分析

五、 总结与实战案例
5.1 关键总结
- at :适合一次性任务(如临时重启服务、延迟执行敏感操作)。
- cron :适合长期周期任务(如每日备份、定时监控)。
5.2 综合案例:自动化运维
需求:每日凌晨2点备份网站数据到远程服务器。
0 2 * * * root ./linux.sh |
每小时检查服务器磁盘使用率,超过90%时发邮件报警
解决方案:github搜索脚本,按时运行!
使用cron 备份:
0 2 * * * rsync -avz /www/user123.com/ user@remote:/backup/
使用at 发送报警:
# 每小时检查磁盘
0 * * * * df -h | grep /dev/sda1 | awk '{print $5}' | while read -r usage;
do
if [ "$usage" -gt 90 ]; then
at now + 5 minutes -t Asia/Shanghai
mail -s "Disk Alert!" admin@example.com <<< "Disk usage on /dev/sda1 is
$usage%"
fi
done
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZHangJT的博客!








