cron

Cron 定时任务配置、日志监控、故障排查等技能。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "cron" with this command: npx skills add chaterm/terminal-skills/chaterm-terminal-skills-cron

定时任务管理

概述

Cron 定时任务配置、日志监控、故障排查等技能。

Crontab 基础

管理命令

编辑当前用户的 crontab

crontab -e

查看当前用户的 crontab

crontab -l

删除当前用户的 crontab

crontab -r

管理其他用户的 crontab(需要 root)

crontab -u username -e crontab -u username -l

时间格式

┌───────────── 分钟 (0-59) │ ┌───────────── 小时 (0-23) │ │ ┌───────────── 日 (1-31) │ │ │ ┌───────────── 月 (1-12) │ │ │ │ ┌───────────── 星期 (0-7, 0和7都是周日) │ │ │ │ │

          • command

特殊字符

  •   # 任意值
    

, # 列表 (1,3,5)

  •   # 范围 (1-5)
    

/ # 步长 (*/5 每5分钟)

示例

0 * * * * # 每小时整点 */15 * * * * # 每15分钟 0 9-17 * * * # 9点到17点每小时 0 0 * * 1-5 # 工作日零点 0 0 1,15 * * # 每月1号和15号零点

特殊时间字符串

@reboot # 系统启动时 @yearly # 每年 (0 0 1 1 *) @monthly # 每月 (0 0 1 * *) @weekly # 每周 (0 0 * * 0) @daily # 每天 (0 0 * * *) @hourly # 每小时 (0 * * * *)

配置文件

用户 crontab

位置

/var/spool/cron/crontabs/username # Debian/Ubuntu /var/spool/cron/username # CentOS/RHEL

格式

SHELL=/bin/bash PATH=/usr/local/bin:/usr/bin:/bin MAILTO=admin@example.com

任务

0 2 * * * /usr/local/bin/backup.sh

系统 crontab

/etc/crontab

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root

格式:多了用户字段

分 时 日 月 周 用户 命令

0 2 * * * root /usr/local/bin/backup.sh

cron.d 目录

/etc/cron.d/myapp

SHELL=/bin/bash PATH=/usr/local/bin:/usr/bin:/bin

0 * * * * appuser /opt/myapp/hourly-task.sh 0 2 * * * root /opt/myapp/daily-backup.sh

预定义目录

/etc/cron.hourly/ # 每小时执行 /etc/cron.daily/ # 每天执行 /etc/cron.weekly/ # 每周执行 /etc/cron.monthly/ # 每月执行

放入可执行脚本即可

chmod +x /etc/cron.daily/myscript

最佳实践

脚本模板

#!/bin/bash

/usr/local/bin/cron-task.sh

日志文件

LOG_FILE="/var/log/cron-task.log"

锁文件(防止重复执行)

LOCK_FILE="/var/run/cron-task.lock"

检查锁

if [ -f "$LOCK_FILE" ]; then echo "$(date): Task already running" >> "$LOG_FILE" exit 1 fi

创建锁

trap "rm -f $LOCK_FILE" EXIT touch "$LOCK_FILE"

记录开始

echo "$(date): Task started" >> "$LOG_FILE"

执行任务

/path/to/actual/command >> "$LOG_FILE" 2>&1 EXIT_CODE=$?

记录结束

echo "$(date): Task finished with exit code $EXIT_CODE" >> "$LOG_FILE"

exit $EXIT_CODE

Crontab 条目

推荐写法

1. 使用绝对路径

2. 重定向输出

3. 添加注释

每日备份 - 凌晨2点

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

每5分钟健康检查

*/5 * * * * /usr/local/bin/healthcheck.sh > /dev/null 2>&1

每周日志清理 - 周日凌晨3点

0 3 * * 0 /usr/local/bin/cleanup-logs.sh >> /var/log/cleanup.log 2>&1

环境变量

在 crontab 中设置

SHELL=/bin/bash PATH=/usr/local/bin:/usr/bin:/bin HOME=/home/user MAILTO=admin@example.com

或在脚本中加载

#!/bin/bash source /etc/profile source ~/.bashrc

日志与监控

查看日志

系统日志

grep CRON /var/log/syslog # Debian/Ubuntu grep CRON /var/log/cron # CentOS/RHEL

实时监控

tail -f /var/log/syslog | grep CRON

查看邮件(如果配置了 MAILTO)

cat /var/mail/username

调试技巧

手动测试脚本

/usr/local/bin/myscript.sh

模拟 cron 环境

env -i /bin/bash --noprofile --norc -c '/usr/local/bin/myscript.sh'

检查 cron 服务状态

systemctl status cron # Debian/Ubuntu systemctl status crond # CentOS/RHEL

常见场景

场景 1:数据库备份

每天凌晨2点备份 MySQL

0 2 * * * /usr/bin/mysqldump -u root -p'password' database | gzip > /backup/db_$(date +%Y%m%d).sql.gz

注意:% 需要转义为 %

场景 2:日志轮转

每天压缩并清理7天前的日志

0 0 * * * find /var/log/myapp -name ".log" -mtime +7 -delete 0 1 * * * gzip /var/log/myapp/.log.1

场景 3:监控告警

每5分钟检查服务状态

*/5 * * * * /usr/local/bin/check-service.sh || /usr/local/bin/send-alert.sh

场景 4:使用 flock 防止重复

使用 flock 确保单实例运行

*/5 * * * * /usr/bin/flock -n /var/lock/mytask.lock /usr/local/bin/mytask.sh

故障排查

问题 排查方法

任务不执行 检查 cron 服务状态、日志

权限错误 检查脚本权限、用户权限

环境变量问题 在脚本中设置 PATH

命令找不到 使用绝对路径

输出丢失 重定向到日志文件

检查 cron 服务

systemctl status cron

检查用户是否被禁止

cat /etc/cron.allow cat /etc/cron.deny

检查语法

crontab -l | grep -v '^#' | while read line; do echo "Checking: $line" done

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

system-admin

No summary provided by upstream source.

Repository SourceNeeds Review
General

Interior Fullplan

# 室内设计·全案方案自动生成器

Archived SourceRecently Updated
General

kb-archiver

智能本地知识库归档系统 v1.1.0。支持 AI 智能分类、批量归档、全文搜索、统计报告。 自动将文件分类归档到本地知识库,提取全文索引支持秒级搜索。 小文件存本地、大文件可对接云存储。支持 Excel/Word/PPT/PDF/TXT 等格式。 当用户需要:归档文件、建立知识库、全文检索文档内容、管理大量工作文档、批量处理文件夹时使用。 关键词:知识库、归档、文件管理、全文搜索、文档索引、批量归档、AI分类

Archived SourceRecently Updated
General

honest-agent

强制诚实系统:防止AI撒谎、虚构、言行不一。核心功能:(1) 承诺自动追踪(写入honest-commitments.json)(2) 回复前诚实校验拦截 (3) 媒体并行识别(大模型+OCR择优)(4) 诚实审计日志 (5) 安全独立存储。触发词:诚实、撒谎、虚构、承诺、图片识别、媒体处理、我承诺、我会帮你。

Archived SourceRecently Updated