找回密码
 立即注册
查看: 27|回复: 0

linux定时任务:crontab 命令

[复制链接]

58

主题

161

回帖

1324

积分

超级版主

积分
1324
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 非凡云 于 2025-5-29 17:15 编辑

crontab是 Linux 系统中用来设置周期性被执行任务的命令。它的名字来源于希腊语 “chronos”(时间),通过配置crontab文件,用户可以指定系统在特定的时间、日期或间隔自动执行脚本或命令。系统会启动一个叫crond的守护进程,负责读取crontab文件中的配置信息,并在指定时间执行相应任务。

crontab 命令基础用法
1. 查看当前用户的 crontab 任务

在终端中输入以下命令,即可查看当前登录用户的crontab任务列表:

crontab -l

如果当前用户没有设置任何定时任务,会提示no crontab for [username] ,其中[username]为当前用户名。


2. 编辑当前用户的 crontab 任务

要添加、修改或删除定时任务,需要编辑crontab文件:

crontab -e

执行该命令后,会打开默认的文本编辑器(如 vi 或 nano),在文件中添加新的任务配置。保存并退出编辑器后,新的配置会立即生效。


3. 为其他用户设置 crontab 任务

系统管理员可以为其他用户设置crontab任务,使用以下命令:

sudo crontab -u [username] -e

将[username]替换为目标用户名,即可编辑该用户的crontab文件。


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

如果想删除当前用户的所有crontab任务,可以使用以下命令:

crontab -r

注意:执行此命令会删除所有定时任务,且无法恢复,操作前请谨慎确认。


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/目录下的所有日志文件。



非凡云致力于提供高品质、高性价比的云服务产品
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|非凡云交流社区 ( 蜀ICP备2023029164号-2 )

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表