插件窝 干货文章 如何在crontab中设置每日任务

如何在crontab中设置每日任务

crontab bash script 任务 1003    来源:    2025-05-09

在 Linux/Unix 系统中使用 crontab 设置每日任务非常简单。以下是详细步骤和示例:


1. 编辑当前用户的 crontab 文件

crontab -e

如果是第一次使用,会提示选择默认编辑器(如 nanovim)。


2. 每日任务的基本语法

# 格式说明:
# 分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-7, 0和7均为周日) 命令

常见示例:

  • 每天午夜 00:00 执行任务:

    0 0 * * * /path/to/your/script.sh
    
  • 每天上午 8:30 执行任务:

    30 8 * * * /path/to/command arg1 arg2
    
  • 每天下午 3:15 执行任务(输出日志到文件):

    15 15 * * * /path/to/script.sh >> /var/log/daily_task.log 2>&1
    

3. 特殊语法(简化版)

  • @daily:等同于 0 0 * * *(每天午夜执行)
    bash @daily /path/to/script.sh

4. 其他实用命令

  • 查看当前用户的 crontab:

    crontab -l
    
  • 删除当前用户的 crontab:

    crontab -r
    
  • 为其他用户设置(需 root 权限)

    sudo crontab -u username -e
    

5. 注意事项

  1. 路径问题:建议使用绝对路径(如 /home/user/script.sh 而非 ~/script.sh)。
  2. 环境变量:cron 默认环境与用户不同,若脚本依赖环境变量,需在脚本中显式设置或通过 crontab 定义: bash SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0 0 * * * /path/to/script.sh
  3. 权限问题:确保脚本有可执行权限: bash chmod +x /path/to/script.sh
  4. 调试技巧:通过邮件或日志查看任务输出: bash 0 0 * * * /path/to/script.sh > /tmp/cron.log 2>&1

示例:每天备份 MySQL 数据库

0 2 * * * /usr/bin/mysqldump -u root -p'password' dbname > /backups/dbname_$(date +\%F).sql

(注意:% 在 crontab 中需转义为 \%


通过以上步骤,你可以轻松设置每日定时任务。如果有更复杂的需求(如每周或每月),只需调整时间字段即可。