创建、列出、修改和删除定时任务,使用简化的 cron 语法自动化系统操作,并管理输出日志。
Cron 调度器 : 管理系统任务和自动化是一项面向实际任务的技能,主要用于类型: 自动化、 生产力;API 密钥 : 否;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 cron 管理系统中的定时任务与自动化操作。
类别: automation, productivity
是否需要 API 密钥: 否
在您的机器上创建、管理和监控定时任务(即 cron 任务)。可自动化执行备份、健康检查、清理脚本、API 调用、通知等任何需按计划运行的操作。您的 agent 会自动处理 cron 语法,您无需手动编写复杂表达式。
echo "=== User crontab ===" crontab -l 2>/dev/null || echo "(empty)" echo "" echo "=== System cron ===" ls /etc/cron.d/ 2>/dev/null echo "" echo "=== Cron directories ===" echo "Hourly: $(ls /etc/cron.hourly/ 2>/dev/null | wc -l) jobs" echo "Daily: $(ls /etc/cron.daily/ 2>/dev/null | wc -l) jobs" echo "Weekly: $(ls /etc/cron.weekly/ 2>/dev/null | wc -l) jobs" echo "Monthly: $(ls /etc/cron.monthly/ 2>/dev/null | wc -l) jobs"
# 添加到用户 crontab (crontab -l 2>/dev/null; echo "SCHEDULE COMMAND") | crontab - # 常见调度模式: # 每分钟执行一次: * * * * * # 每 5 分钟执行一次: */5 * * * * # 每小时执行一次: 0 * * * * # 每天凌晨 2 点执行: 0 2 * * * # 每周一上午 9 点执行: 0 9 * * 1 # 每月 1 号执行: 0 0 1 * * # 工作日(周一至周五)上午 8 点执行: 0 8 * * 1-5
# 交互式编辑 crontab crontab -e # 或者删除匹配特定模式的某一行 crontab -l | grep -v "PATTERN_TO_REMOVE" | crontab -
# 最近的 cron 活动记录 grep CRON /var/log/syslog | tail -20 # 或在使用 journald 的系统上 journalctl -u cron --since "1 hour ago" --no-pager | tail -20
# 先手动运行命令,确保其能正常工作 COMMAND_HERE # 检查其输出是否符合预期 echo "Exit code: $?"
┌───────────── 分钟(0–59) │ ┌───────────── 小时(0–23) │ │ ┌───────────── 日期(1–31) │ │ │ ┌───────────── 月份(1–12) │ │ │ │ ┌───────────── 星期几(0–7,0 和 7 均表示周日) │ │ │ │ │ * * * * * command
# 每天上午 8 点检查磁盘空间并发送告警邮件
0 8 * * * df -h / | awk 'NR==2 && $5+0 > 80 {print "Disk alert: " $5 " used"}' | mail -s "Disk Warning" you@email.com
# 每周日早上 3 点清理 /tmp 目录
0 3 * * 0 find /tmp -type f -mtime +7 -delete
# 每晚 2 点备份数据库
0 2 * * * pg_dump mydb > /backups/db_$(date +%Y%m%d).sql
# 每 5 分钟检查服务状态,若崩溃则重启(myservice)
*/5 * * * * systemctl is-active myservice || systemctl restart myservice
# 每 15 分钟记录一次系统负载信息
*/15 * * * * echo "$(date): $(uptime)" >> /var/log/system-stats.log
# cron 默认仅加载极简环境变量。请显式声明所需变量: (crontab -l 2>/dev/null; echo "PATH=/usr/local/bin:/usr/bin:/bin SHELL=/bin/bash 0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1") | crontab -
# 记录标准输出与错误输出到日志文件 * * * * * command >> /var/log/myjob.log 2>&1 # 丢弃全部输出 * * * * * command > /dev/null 2>&1 # 通过邮件发送输出(需已配置 mail 服务) MAILTO=you@email.com 0 8 * * * command
用户:“每天凌晨 2 点运行我的备份脚本”
→ (crontab -l 2>/dev/null; echo "0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1") | crontab -
用户:“每小时检查一次磁盘空间,若使用率超过 80% 则向我发出告警”
→ 编写检测脚本并配置对应 cron 任务
用户:“当前有哪些定时任务正在运行?”
→ 列出所有用户 crontab 及系统级 cron 目录内容
用户:“停止每日清理任务”
→ 查找并移除对应的 cron 条目
>> logfile 2>&1),否则 cron 可能填满用户的邮件队列timedatectl 命令确认相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章