crond
- 设置 crontab 开机自启:
systemctl enable crond
cron是服务名称
crond是后台进程
crontab是计划任务表
在 /etc目录下有一个crontab 文件,这个就是系统任务调度的配置文件
cron服务
- cron是一个 Liunx 下 的定时执行工具,可以在无需人工干预的情况下运行作业。
systemctl start crond //启动服务
systemctl stop crond //关闭服务
systemctl restart crond //重启服务
systemctl reload crond //重新载入配置
systemctl status crond //查看服务状态
- 在crontab文件中如何输入需要执行的命令和时间。
- 该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
- 每个域之间使用空格或者制表符分隔。
创建cron脚本
- 写cron脚本文件,命名为 mysqlRollBack.cron
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt表示,每隔15分钟,执行打印一次命令- 添加定时任务。执行命令 “crontab crontest.cron”。
- "crontab -l" 查看定时任务是否成功或者检测
/var/spool/cron下是否生成对应cron脚本
注意:这操作是直接替换该用户下的crontab,而不是新增
crontab file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。crontab [-u user] -e:编辑某个用户的crontab文件内容。默认表示编辑当前用户的crontab文件内容。crontab [-u user] -l:显示某个用户的crontab文件内容。默认显示当前用户的crontab文件内容。crontab [-u user] -[i]r:从/var/spool/cron目录中删除某个用户的crontab文件,默认删除当前用户的crontab文件。-i参数指定在删除用户的crontab文件时是否给确认提示。特殊字符:
- 星号
(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作; - 逗号
(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”; - 中杠
(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”; - 正斜线
(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
- 星号
使用示例:
每周末,凌晨1-5点,每隔10分钟执行一次auto-del-log.sh,日志输出到auto.log
*/10 1-5 * * 6,7 cd /data/prod/kafka_connect_tongji/logs; ./auto-del-log.sh >> auto.log 2>&1
1表示标准输出,stdout。2表示标准错误,stderr。2>&1的意思就是将标准错误重定向到标准输出
linux中
>表示覆盖原文件内容,**>>**表示追加内容。
| 格式 | 说明 |
|---|---|
| */1 * * * * service httpd restart | 每一分钟 重启httpd服务 |
| 0 */1 * * * service httpd restart | 每一小时 重启httpd服务 |
| 30 21 * * * service httpd restart | 每天 21:30 分 重启httpd服务 |
| 26 4 1,5,23,28 * * service httpd restart | 每月的1号,5号 23 号 28 号 的4点26分,重启httpd服务 |
| 26 4 1-21 * * service httpd restart | 每月的1号到21号 的4点26分,重启httpd服务 |
| */2 * * * * service httpd restart | 每隔两分钟 执行,偶数分钟 重启httpd服务 |
| 1-59/2 * * * * service httpd restart | 每隔两分钟 执行,奇数 重启httpd服务 |
| 0 23-7/1 * * * service httpd restart | 每天的晚上11点到早上7点 每隔一个小时 重启httpd服务 |
| 0,30 18-23 * * * service httpd restart | 每天18点到23点 每隔30分钟 重启httpd服务 |
| 0-59/30 18-23 * * * service httpd restart | 每天18点到23点 每隔30分钟 重启httpd服务 |
- 服务器定时每天凌晨
3:00自动重启。
[root@osvue ~]# crontab -e
* 3 * * * /usr/sbin/reboot
[root@osvue ~]# systemctl restart crond
- 每隔10分钟定时备份/var/log/httpd下的日志文件,并将其保存至httpbackuplog目录中。
[root@osvue cron.d]# touch httpbackuplog.sh
[root@osvue cron.d]# vim httpbackuplog.sh
#!/bin/bash
logusr="/var/log/httpd"
if [ ! -d "$httpbackuplog"];then
mkdir /httpbackuplog
fi
cd $logusr
tar -cvzf $(date+"%Y""%m""%d""%H""%M")httpdlog.tar.gz*
mv $(date+"%Y""%m""%d""%H""%M")httpdlog.tar.gz/httpbackuplog
[root@osvue cron.d]#
[root@osvue cron.d]# crontab -e
*/10 * * * * /etc/cron.d/httpbackuplog.sh
[root@osvue cron.d]# systemctl restart crond
示例
首先需要执行 crondtab -e 启用编辑。
每天凌晨 1:30 分重启 docker 服务:
30 1 * * * systemctl restart docker.service每月 1、10、20 日的 23:59 重启 docker 服务:
59 23 1,10,20 * * systemctl restart docker.service每月 1 到 10 日的 4:45 重启 docker 服务:
45 4 1-10 * * systemctl restart docker.service每隔两分钟重启 docker 服务:
*/2 * * * * systemctl restart docker.service每月 10 到 20 日每隔两日的 4:45 重启 docker 服务:
45 4 10-20/2 * * systemctl restart docker.service晚上 11 点到早上 7 点之间每隔一个小时重启 docker 服务:
0 23-7/1 * * * systemctl restart docker.service
