crontab

  • Linux crontab是用来定期执行程序的命令
    当安装完成操作系统之后,默认便会启动此任务调度命令。
    crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
  • 注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
1
2
3
4
5
6
7
8
9
10
11
12
# 常用参数
-e 设置计时器
-l 列出当前计时器的设置

* * * * * 执行命令
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#列出当前计时器的设置
[root@localhost ~]# crontab -l

#编写定时器
[root@localhost ~]# crontab -e


# 常用的定义时间问题

# 每分钟执行
* * * * *

# 每五分钟执行
*/5 * * * *

# 每小时执行
0 * * * *

# 每天执行
0 0 * * *

# 每周执行
0 0 * * 0

# 每月执行
0 0 1 * *

# 每年执行
0 0 1 1 *

# 工作日9点到下午六点每小时提醒一次
0 9-18 * * 1-5 /opt/drink_water.sh

重启使其立即生效

1
2
3
/bin/systemctl restart crond.service

systemctl restart crond

切割日志问题延伸

详细日志切割解释https://pengyirui.gitee.io/posts/f708.html

1
2
3
4
5
比如我需要使用`/etc/logrotate.d`下的`catalina`切割文件,但不支持每小时切割
此时不能直接 crontab -e 编写
logrotate -vf /etc/logrotate.d/catalina
而是需要
/usr/sbin/logrotate -vf /etc/logrotate.d/catalina