1.1 crontab 服务管理
crontab 服务管理是 Unix 和类 Unix 系统(如 Linux 和 macOS)中用于设置周期性被执行的任务的工具。crontab 服务管理是 "cron table"(cron 表格)的缩写,它允许用户为任务安排在未来某个时间点执行,也可以定期重复执行。
1.2 crontab 定时任务设置
1) 基本语法
crontab [选项]
2) 选项说明
选项 | 功能 |
-e | 编辑 crontab 定时任务 |
-l | 查询 crontab 任务 |
-r | 删除当前用户所有的 crontab 任务 |
查看当前用户的 crontab 列表:
crontab -l
编辑当前用户的 crontab 列表:
crontab -e
会打开一个文本编辑器(通常是你在系统中设置的默认编辑器),你可以在其中添加、修改或删除任务。
删除当前用户的 crontab 列表:
crontab -r
注意:这会删除所有当前用户的 crontab 任务,使用时请谨慎。
crontab 文件格式
crontab 文件中的每一行都代表一个定时任务,其格式如下:
* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- Day of the week (0 - 6) (Sunday=0)
| | | +------ Month of the year (1 - 12)
| | +-------- Day of the month (1 - 31)
| +---------- Hour (0 - 23)
+------------ Minute (0 - 59)
3) 选择编辑器
aab@ubuntu:~/桌面$ crontab -e
执行上述命令,系统会提示我们选择编辑器, 此处没有 vim。
no crontab for atguigu - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
可以通过 EDITOR 环境变量在执行 crontab 时选择编辑器,命令如下。
aab@ubuntu:~/桌面$ EDITOR=vim crontab -e
4) 参数说明
( 1) 执行上述命令会进入 crontab 编辑界面, 并打开 vim 编辑定时任务。
* * * * * 执行的任务
项目 | 含义 | 范围 |
第一个“ *” | 一小时当中的第几分钟 | 0-59 |
第二个“ *” | 一天当中的第几小时 | 0-23 |
第三个“ *” | 一个月当中的第几天 | 1-31 |
第四个“ *” | 一年当中的第几月 | 1-12 |
第五个“ *” | 一周当中的星期几 | 0-7( 0 和 7 都代表星期日) |
( 2) 特殊符号
特殊符号 | 含义 |
* | 代表任何时间。 比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。比如“ 0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分, 12 点 0 分, 16 点 0 分都执行一次命令 |
- | 代表连续的时间范围。 比如“0 5 * * 1-6 命令”, 代表在周一到周六的凌晨 5 点 0 分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”, 代表每隔 10 分钟就执行一遍命令 |
( 3) 特定时间执行命令
时间 | 含义 |
45 22 * * * 命令 | 在 22 点 45 分执行命令 |
0 17 * * 1 命令 | 每周 1 的 17 点 0 分执行命令 |
0 5 1,15 * * 命令 | 每月 1 号和 15 号的凌晨 5 点 0 分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨 4 点, 每隔 10 分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月 1 号和 15 号, 每周 1 的 0 点 0 分都会执行命令。 注意:星期几和几号最好不要同时出现, 因为他们定义的都是天。非常容易让管理员混乱。 |
5) 实操
( 1) 监听 test.txt
aab@ubuntu:~/桌面$ tail -F test.txt
( 2) 每隔 1 分钟,向/home/aab/桌面/test.txt 文件中添加一个 hello,world 的字符串
*/1 * * * * /bin/echo "hello,world" >> /home/aab/桌面/test.txt
6)注意事项
确保你的脚本或命令具有执行权限(使用 chmod
命令)。
在 crontab 中执行脚本时,环境变量可能与你在终端中看到的有所不同。如果你的脚本依赖于特定的环境变量,请确保在脚本中显式设置这些变量。
使用 crontab -e
编辑任务时,如果未看到任何输出或编辑器没有打开,可能是因为你的系统没有设置默认编辑器或环境变量问题。
使用 crontab -l
检查你的 crontab 文件,确保你的任务已正确添加。
对于复杂的任务调度需求,考虑使用更高级的任务调度工具,如 at
、systemd timers
或更专业的任务调度软件。