本文最后更新于83 天前,其中的信息可能已经过时,如有错误请发送邮件到sherry.rain@qq.com
前言
在现代的计算机系统中,定时计划任务是一项非常重要的功能。它能够帮助我们在特定的时间点自动执行一些任务,从而提高工作效率和系统的稳定性。而在CentOS 7操作系统中,我们可以使用crontab命令来创建和管理这些定时计划任务。本文将介绍如何在CentOS 7中使用crontab命令执行定时计划任务,帮助读者快速上手并灵活运用这一功能。
1. 确认服务运行
首先确认服务是运行着的,如果关了请启动
# 启动crond服务
$ systemctl start crond
# 设为开机启动
$ systemctl enable crond
# 查看状态
$ systemctl status crond
2. 配置定时任务
定时任务的配置方法,都是通过编写配置文件进行配置的。但配置文件又分为两类:
- 用户的配置,根据用户进行区分的用户级别的配置文件
- 系统配置,统一的全局配置文件
下面就说明一下这两种配置文件的配置方式。
用户配置
# 编辑用户的定时任务,指定执行的用户
# -u 指定用户,不加默认为当前用户
$ crontab -e -u {user}
# 列出某个用户cron服务的详细内容
$ crontab -l -u {user}
# 删除某个用户的cron服务
$ crontab -r -u {user}
使用命令编辑用户的定时任务,会打开此用户的配置文件,开始是空的文件,然后就是在此文件中配置定时任务,配置完后生成的配置文件目录为: /var/spool/cron/ ,在此目录下就可以看到以用户名命名的配置文件。
之前配置文件中,该如何配置,下面统一详解。
系统配置
除了上面用户配置,还有一个系统的全局配置,配置文件为:/etc/crontab 。此文件可以直接定义定时任务,但前提是有root权限才能修改。
# 编辑系统配置,文件默认内容如下
$ vim /etc/crontab
------------------------------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
------------------------------------------------------------------
3. 配置语法
上面说明了两种配置方式,但两种配置方式都是需要通过定义配置来实现定时任务的,那这配置该如何写呢,其实在系统配置文件中,默认的内容就有提示:
Example of job definition:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr …
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * user-name command to be executed
# 格式就是最下面一行的这个,意思明显,从头到尾,分别如下:
分钟 小时 天 月 周 用户名 需要执行的命令
* * * * * user-name command to be executed
根据此格式,举例说明,根据举例,自行编写自己的定时任务配置即可。
# 每天,每30分钟执行一次 mycommand命令,这需要此文件具有可执行权限。
*/30 * * * * root /usr/local/mycommand.sh
# 每天凌晨三点的每一分钟,都执行命令脚本
# PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令
* 3 * * * root /usr/local/mycommand.sh
# 这样就是每天凌晨三点整执行一次命令脚本
00 3 * * * root /usr/local/mycommand.sh
# 每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用
*/10 11-13 * * * root /usr/local/mycommand.sh
# 每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次
10-30 * * * * root /usr/local/mycommand.sh
# 每小时的10,30分钟,分别执行一次命令脚本,共执行2次
10,30 * * * * * root /usr/local/mycommand.sh
# 每周一至周五,半夜3点执行一次命令脚本
00 3 * * 1-5 root /usr/local/mycommand.sh
# 从1月到6月,每月的10-20号,每天的10点到12点,每30分钟执行一次。
*/30 10-12 10-20 1-6 * root /usr/local/mycommand.sh
# 每隔一天的凌晨执行一次命令
00 00 */2 * * root /usr/local/mycommand.sh
OK,上面就是配置的语法,但需要特别注意几点:
- cron 的任务计划, 并不会调用用户设置的环境变量,而是只会使用shell的基础环境变量。
- cron 不方便执行语句繁多的任务,常用推荐是写成shell脚本或python脚本进行执行。
- 执行脚本文件时,此文件必须具有可执行权限。
另外,执行的计划任务,日志在 /var/log/cron 中可以查看执行日志,以供分析查看。
结语
通过本文的介绍,我们学习了如何在CentOS 7中使用crontab命令执行定时计划任务,并通过实例演示了如何创建和管理定时任务。定时计划任务的使用能够极大地提高工作效率和系统的稳定性,帮助我们自动化一些重复性的操作。希望本文对读者能够有所帮助,让大家能够更好地利用CentOS 7中的crontab命令来管理定时计划任务。