Cron 表达式可视化
什么是 Cron
Cron 是类 Unix 系统上的一个时间表进程(daemon),用于在固定时间、日期、间隔运行程序或脚本。它常用于系统管理任务,如备份、系统维护和其他周期性任务。

Cron 基本概念
Cron 表(Crontab):保存定时任务的文件。
Cron 表达式:定义任务何时运行的格式,由五个时间字段和一个命令字段组成。
Cron 表达式格式

* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- 星期几 (0 - 7) (星期天为0或7)
| | | +------ 月份 (1 - 12)
| | +-------- 日期 (1 - 31)
| +---------- 小时 (0 - 23)
+------------ 分钟 (0 - 59)

预定义 Cron 时间格式

@reboot:在每次重启时运行
@yearly 或 @annually:每年运行一次,相当于 0 0 1 1 *
@monthly:每月运行一次,相当于 0 0 1 * *
@weekly:每周运行一次,相当于 0 0 * * 0
@daily:每天运行一次,相当于 0 0 * * *
@hourly:每小时运行一次,相当于 0 * * * *

安装 Cron
Ubuntu 系统通常预装了 Cron。如果没有安装,可以使用以下命令安装:

sudo apt update
sudo apt install cron

安装完成后,启动 Cron 服务并设置开机自启:

Copy code
sudo systemctl enable cron
sudo systemctl start cron

使用 Crontab
编辑 Crontab 文件
要编辑当前用户的 Crontab 文件,使用以下命令:

crontab -e

这将打开一个文本编辑器,可以在其中添加、修改或删除定时任务。

查看 Crontab 文件
要查看当前用户的 Crontab 任务列表,使用以下命令:

crontab -l

删除 Crontab 文件
要删除当前用户的 Crontab 文件,使用以下命令:

crontab -r

添加 Cron 任务示例
假设我们有一个脚本 /home/user/backup.sh,希望每天凌晨 2 点运行一次。可以在 Crontab 中添加以下行:

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

使用日志记录 Cron 任务输出
默认情况下,Cron 任务的输出(包括标准输出和错误输出)不会被记录。为了记录输出,可以将其重定向到日志文件。例如:

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

环境变量
Cron 运行的环境与用户的登录环境不同。可以在 Crontab 文件的顶部设置必要的环境变量。例如:

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

Crontab 文件示例
以下是一个完整的 Crontab 文件示例:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 每天凌晨 2 点运行备份脚本
0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
# 每周日凌晨 3 点运行清理脚本
0 3 * * 0 /home/user/cleanup.sh >> /home/user/cleanup.log 2>&1
管理系统级别的Cron任务
系统级别的Cron任务通常保存在 /etc/crontab 文件中,或者分别存放在 /etc/cron.d/ 目录中的独立文件中。
编辑系统级别的Crontab文件
要编辑系统级别的Crontab文件,使用以下命令:
sudo nano /etc/crontab

文件格式类似于用户 Crontab,但包含一个额外的字段,指定任务的用户。例如:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 分钟 小时 日期 月份 星期 用户 命令
0 2 * * * root /usr/local/bin/system_backup.sh

定期运行的任务目录
Ubuntu 系统有一些特殊的目录,用于存放定期运行的任务脚本:

/etc/cron.daily/:每天运行
/etc/cron.weekly/:每周运行
/etc/cron.monthly/:每月运行
/etc/cron.hourly/:每小时运行
在这些目录中添加脚本,它们将按照相应的时间间隔自动运行。
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

ZJM 微信支付

微信支付

ZJM 支付宝

支付宝