阿飞
阿飞
发布于 2025-07-31 / 7 阅读
0
0

crontab定时任务功能介绍

下面是对 Linux 中 crontab 定时任务 的由浅入深介绍,涵盖从基本语法、使用方法到进阶应用。


一、什么是 crontab

crontab 是 Linux 系统中的定时任务调度工具,可以让你在指定的时间周期自动执行命令或脚本。它非常适用于定时备份、日志清理、定期运行脚本等任务。


二、基础语法

crontab 的语法格式如下:

* * * * * command
| | | | |
| | | | └── 星期几(0-7)(0 和 7 都代表星期日)
| | | └──── 月份(1-12)
| | └────── 每月第几天(1-31)
| └──────── 小时(0-23)
└────────── 分钟(0-59)

示例:

30 2 * * * /home/user/backup.sh

每天凌晨 2 点 30 分执行 /home/user/backup.sh


三、基本命令

  • 查看当前用户的定时任务:

    crontab -l
  • 编辑当前用户的定时任务:

    crontab -e
  • 删除当前用户的定时任务:

    crontab -r

四、特殊时间字符串(简化语法)

crontab 支持以下快捷表达方式:

表达式

含义

@reboot

在系统启动后运行一次

@yearly

每年一次,等同于 0 0 1 1 *

@monthly

每月一次,等同于 0 0 1 * *

@weekly

每周一次,等同于 0 0 * * 0

@daily

每天一次,等同于 0 0 * * *

@hourly

每小时一次,等同于 0 * * * *

示例:

@daily /usr/bin/python3 /home/user/daily_report.py

每天运行 daily_report.py


五、进阶语法和技巧

1. 多个值用逗号隔开:

0 8,12,18 * * * /home/user/send_report.sh

每天的 8、12、18 点运行

2. 指定范围:

0 9-17 * * 1-5 /home/user/work_hours.sh

每周一到周五的 9 点到 17 点整点运行

3. 每隔一段时间:

*/15 * * * * /home/user/check_status.sh

每 15 分钟运行一次

4. 输出重定向(记录日志):

0 1 * * * /home/user/cleanup.sh >> /home/user/cleanup.log 2>&1

六、注意事项

  1. 环境变量限制
    Crontab 默认不会加载用户的 bash 环境变量,例如 PATH,所以建议脚本中显式指定绝对路径。

  2. 输出调试
    如果任务没有按预期执行,可加日志或邮件通知,或者重定向输出以查看错误原因。

  3. 执行权限
    脚本必须具有可执行权限,例如 chmod +x script.sh

  4. 用户级与系统级

    • crontab -e 修改当前用户的任务

    • /etc/crontab 是系统级任务文件,还可指定用户字段


七、示例:定时备份网站目录

0 3 * * * tar -czf /backup/www-$(date +\%F).tar.gz /var/www/html

每天凌晨 3 点自动备份网站目录到 /backup,文件名带日期。


评论