网淘吧来吧,欢迎您!

Cron Scheduler技能使用说明

2026-03-29 新闻来源:网淘吧 围观:22
电脑广告
手机广告

Cron 计划任务管理器

使用 cron 在您的系统上管理计划任务和自动化。

类别:自动化,生产力需要 API 密钥:

功能

在您的机器上创建、管理和监控计划任务(cron 任务)。自动化备份、健康检查、清理脚本、API 调用、通知 —— 任何需要按计划运行的任务。您的代理会处理 cron 语法,您无需操心。

代理命令

列出所有 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"

添加一个 cron 任务

# Add to user crontab
(crontab -l 2>/dev/null; echo "SCHEDULE COMMAND") | crontab -

# Common schedules:
# Every minute:        * * * * *
# Every 5 minutes:     */5 * * * *
# Every hour:          0 * * * *
# Every day at 2am:    0 2 * * *
# Every Monday 9am:    0 9 * * 1
# Every 1st of month:  0 0 1 * *
# Weekdays at 8am:     0 8 * * 1-5

删除一个 cron 任务

# Edit crontab interactively
crontab -e

# Or remove a specific line
crontab -l | grep -v "PATTERN_TO_REMOVE" | crontab -

检查 cron 日志

# Recent cron activity
grep CRON /var/log/syslog | tail -20

# Or on systems using journald
journalctl -u cron --since "1 hour ago" --no-pager | tail -20

测试一个 cron 命令

# Run the command manually first to make sure it works
COMMAND_HERE

# Check it produces expected output
echo "Exit code: $?"

Cron 语法参考

┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * * command

常见模式

# Disk space alert daily at 8am
0 8 * * * df -h / | awk 'NR==2 && $5+0 > 80 {print "Disk alert: " $5 " used"}' | mail -s "Disk Warning" you@email.com

# Clean /tmp weekly
0 3 * * 0 find /tmp -type f -mtime +7 -delete

# Backup database nightly
0 2 * * * pg_dump mydb > /backups/db_$(date +\%Y\%m\%d).sql

# Restart a service if it crashes (every 5 min check)
*/5 * * * * systemctl is-active myservice || systemctl restart myservice

# Log system stats every 15 minutes
*/15 * * * * echo "$(date): $(uptime)" >> /var/log/system-stats.log

Cron 中的环境变量

# Cron runs with minimal environment. Set what you need:
(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 -

重定向输出(重要!)

# Log output
* * * * * command >> /var/log/myjob.log 2>&1

# Discard output
* * * * * command > /dev/null 2>&1

# Email output (if mail is configured)
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条目

约束条件

  • Cron以最小PATH运行——对命令使用绝对路径
  • 始终重定向输出(>> logfile 2>&1),否则cron会填满邮件池
  • Cron使用系统时区——用以下命令检查timedatectl
  • 最小时间间隔是1分钟——对于小于1分钟的任务,请在脚本中使用循环
  • 用户crontab在用户被删除后不会保留
  • 在安排任务前,请手动测试命令
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第330024名访客 今日有378篇新文章/评论