Crond 快速入门
Cron 是一个用来在Unix和类Unix系统上执行定时任务的工具。Cron的配置文件称为 crontab,它允许用户安排命令或脚本在未来特定的时间自动运行。
安装检查
1、检测系统是否安装crond服务
systemctl status crond
2、如果没有安装,则安装
yum -y install vixie-cron
yum -y install crontabs
- vixie-cron 软件包是 cron 的主程序;
- crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
3、服务启停
systemctl start crond //启动服务
systemctl stop crond //关闭服务
systemctl restart crond //重启服务
systemctl reload crond //重新载入配置
systemctl status crond //查看crontab服务状态
4、 设置开机自动启动
chkconfig --level 345 crond on
# 或
systemctl enable crond
Crontab 命令
在Linux系统中,我们可以使用 crontab --help
来查看crontab的命令帮助。
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
Crontab 表达式
执行 more /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
* * * * * root python /usr/sbin/qemu-ga_check.py
不同列的参数:
- 第1列表示分钟 1~59 每分钟用*或者 */1表示
- 第2列表示小时 1~23(0表示0点)
- 第3列表示日期 1~31
- 第4列表示月份 1~12
- 第5列标识号星期 0~6(0表示星期天)
- 第6列要运行的命令
特殊符号的含义:
- 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
- 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
示例
30 0 * * * /usr/local/etc/rc.d/lighttpd restart //每晚的00:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart //每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart //每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart //每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart //每天18 : 00至23 : 00之间每隔30分钟重启 Apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart //每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart //每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart //晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart //每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart //一月一号的4点重启apache
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44 //每半小时同步一下时间
设置定时任务
直接输入命令 crontab -e
或者编辑文件/etc/crontab
就可以设置定时任务。
crontab -e
或者
vi /etc/crontab
crontab -e 方式
- 输入 crontab -e
crontab [-u username] [-l|-e|-r] -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度; -e: 编辑crontab 的工作内容; -l: 查阅crontab的工作内容; -r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。
- 按下 a 键进入到编辑模式
- 输入定时任务表达式,如:
0 */1 * * * /home/work/start-service.sh
- 同时按下
ctrl+c
退出编辑模式 - 按下
shift+:
输入wq
退出 crontab
vi /etc/crontab 方式
- 打开终端,然后输入
crontab -e
命令来编辑 Crontab 文件。 - 在打开的编辑器中,你可以添加你的定时任务。Crontab的格式如下
* * * * * /path/to/command arg1 arg2
- 这五个星号分别代表 分钟、小时、日、月、星期(0-59, 0-23, 1-31, 1-12, 0-7)。例如,如果你想要每天早上5点执行脚本,你可以这样写:
0 5 * * * /path/to/script.sh
- 添加完任务后,保存并退出编辑器。Crontab 会自动安装新的配置。
- 你可以通过crontab -l命令来查看当前用户的Crontab文件。
- 如果你想删除一个定时任务,你可以打开Crontab文件,然后删除你不想要的行,然后保存并退出。
- 如果你想停止某个定时任务,你可以使用crontab -r命令来删除当前用户的Crontab文件。
注意:在你的脚本路径或者命令前面加上
/usr/bin/env bash
或者/bin/sh
,这样可以确保无论在哪个环境下,你的脚本都能正确运行。
作者:Jeebiz 创建时间:2024-08-16 14:56
最后编辑:Jeebiz 更新时间:2024-11-01 12:20
最后编辑:Jeebiz 更新时间:2024-11-01 12:20