本帖最后由 非凡云 于 2025-5-29 17:15 编辑
crontab是 Linux 系统中用来设置周期性被执行任务的命令。它的名字来源于希腊语 “chronos”(时间),通过配置crontab文件,用户可以指定系统在特定的时间、日期或间隔自动执行脚本或命令。系统会启动一个叫crond的守护进程,负责读取crontab文件中的配置信息,并在指定时间执行相应任务。
crontab 命令基础用法
1. 查看当前用户的 crontab 任务在终端中输入以下命令,即可查看当前登录用户的crontab任务列表: 如果当前用户没有设置任何定时任务,会提示no crontab for [username] ,其中[username]为当前用户名。
2. 编辑当前用户的 crontab 任务要添加、修改或删除定时任务,需要编辑crontab文件: 执行该命令后,会打开默认的文本编辑器(如 vi 或 nano),在文件中添加新的任务配置。保存并退出编辑器后,新的配置会立即生效。
3. 为其他用户设置 crontab 任务系统管理员可以为其他用户设置crontab任务,使用以下命令: sudo crontab -u [username] -e 将[username]替换为目标用户名,即可编辑该用户的crontab文件。
4. 删除当前用户的 crontab 任务如果想删除当前用户的所有crontab任务,可以使用以下命令: 注意:执行此命令会删除所有定时任务,且无法恢复,操作前请谨慎确认。
crontab 文件格式解析
crontab文件中的每一行代表一个定时任务,格式如下:
* * * * * command
从左到右,5 个星号分别代表:
分钟(0 - 59):任务执行的分钟数。
小时(0 - 23):任务执行的小时数。
日期(1 - 31):任务执行的日期。
月份(1 - 12):任务执行的月份。
星期(0 - 6):任务执行的星期几,其中 0 和 7 都代表周日。
command则是需要执行的具体命令或脚本路径。
除了使用星号表示任意值,还可以使用以下特殊符号和表达式: ,:用于指定多个值,例如1,15 * * * *表示在每小时的第 1 分钟和第 15 分钟执行任务。 -:用于指定一个范围,例如1-10 * * * *表示在每小时的第 1 到第 10 分钟执行任务。 /n:用于指定间隔,例如*/5 * * * *表示每隔 5 分钟执行一次任务。
实用案例分享
案例 1:每天凌晨 2 点备份数据库:
0 2 * * * /path/to/backup_script.sh 上述配置表示每天凌晨 2 点 0 分,执行/path/to/backup_script.sh脚本,实现数据库备份。
案例 2:每周一至周五上午 9 点发送日报邮件:
0 9 * * 1-5 /path/to/send_daily_report.sh 该配置会在每周一至周五的上午 9 点整,执行/path/to/send_daily_report.sh脚本,自动发送日报邮件。
案例 3:每月 1 号凌晨 1 点清理日志文件:
0 1 1 * * rm -rf /var/log/*.log 此配置将在每个月的 1 号凌晨 1 点,删除/var/log/目录下的所有日志文件。
|