crontab 基础配置使用

2022-05-23  本文已影响0人  wayyyy

在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。

权限控制

crontab 是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的:

常用命令
-u user 用来设定某个用户的 crontab 服务
-e      编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l      显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r      从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 
-i      在删除用户的 crontab 文件时,给确认提示。
定时任务配置

crontab 定时任务非常简单,只需执行crontab -e命令,然后输入想要定时执行的任务即可。
当我们执行crontab -e命令时,打开的是一个文件,而且操作方法和 Vim 是一致的。这个文件的格式才是我们真正需要学习的内容,文件格式如下:

# crontab -e
  进入 crontab 编辑界面。会打开Vim编辑你的任务
  * * * * * 执行的任务

通过 5 个*来确定命令或任务的执行时间的,这 5 个*

时间特殊符号含义:

时间 含义
* 代表任何时间。比如第一个*就代表一小时种每分钟都执行一次的意思。
, 代表不连续的时间。比如 "0 8,12,16 * * * 命令" 代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
- 代表连续的时间范围。比如 "0 5 * * 1-6 命令" 代表在周一到周六的凌晨 5 点 0 分执行命令。
/ 代表每隔多久执行一次。比如 "*/10 * * * * 命令" 代表每隔 10 分钟就执行一次命令。

举例:
45 22 * * * 命令,表示 在 22 点 45 分执行命令
0 17 ** 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 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆

crontab -e编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。

在书写 crontab 定时任务时,需要注意以下几个事项:

  1. 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  2. crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  3. 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  4. 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

参考资料
1、http://c.biancheng.net/view/1092.html

上一篇 下一篇

猜你喜欢

热点阅读