crond 是 Linux 中的一个守护进程,用于周期性地执行任务。它根据用户定义的计划任务表(通常是 crontab 文件)来调度和执行任务。以下是关于 crond 的详细解释和示例。

crond 的基本用法

  1. 启动和停止 crond 服务:

    • 启动 crond 服务:

      sudo systemctl start crond
    • 停止 crond 服务:

      sudo systemctl stop crond
    • 重启 crond 服务:

      sudo systemctl restart crond
    • 查看 crond 服务状态:

      sudo systemctl status crond
  2. 编辑 crontab 文件:

    • 编辑当前用户的 crontab 文件:

      crontab -e
  3. 列出当前用户的 crontab 任务:

    crontab -l
  4. 删除当前用户的 crontab 任务:

    crontab -r

crontab 文件格式

crontab 文件的格式如下:

分 时 日 月 周 命令
*  *  *  *  *  command to be executed
-  -  -  -  -
|  |  |  |  |
|  |  |  |  +---- 星期几 (0 - 7) (Sunday=0 or 7)
|  |  |  +------- 月份 (1 - 12)
|  |  +--------- 每月的哪一天 (1 - 31)
|  +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

crontab 示例

  1. 每分钟执行一次命令:

    * * * * * /path/to/command
  2. 每天凌晨 2 点执行备份脚本:

    0 2 * * * /path/to/backup.sh
  3. 每周一上午 5 点执行日志清理:

    0 5 * * 1 /path/to/cleanup.sh
  4. 每月 1 号凌晨 3 点执行系统更新:

    0 3 1 * * /path/to/update.sh
  5. 每隔 10 分钟执行一次脚本:

    */10 * * * * /path/to/script.sh

环境变量

crontab 中可以设置环境变量,例如:

MAILTO="user@example.com"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

使用日志记录

crond 的日志通常记录在 /var/log/cron 文件中。可以通过查看该文件来排查和调试 crond 的问题:

sudo tail -f /var/log/cron

示例

比如一个备份脚本 backup.sh,需要每天凌晨 1 点执行,并且希望将输出结果通过邮件发送给你。首先编辑 crontab 文件:

crontab -e

然后添加以下内容:

MAILTO="your-email@example.com"
0 1 * * * /path/to/backup.sh

这个配置会在每天凌晨 1 点执行 backup.sh 脚本,并将输出结果发送到 your-email@example.com

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝