- cron机制
cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制
- 安装crontab
yum install crontabs
- crontab服务操作说明
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
- 查看crontab服务状态
service crond status
- 加入开机启动
chkconfig –level 35 crond on
- crontab参数
-u: 这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab
crontab -u 使用者名称
-l: 可以列出crontab的内容
crontab -l
-r: 可以移除crontab
crontab -r
-e: 可以使用系统预设的编辑器,开启crontab
crontab -e
-i: 可以移除crontab,会跳出系统信息让你再次确定是否移除crontab
crontab -i
- crontab格式说明
分 时 日 月 星期 要运行的命令
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
- crontab时间格式范例
1-3表示123
1-9/2表示13579
*/2 每隔2XX执行一次
- crontab范例
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
每小时的第3和第15分钟执行 3,15 * * * *
在8点到11点的第3和第15分钟执行 3,15 8-11 * * *
每周一8点到11点的第3和第15分钟执行 3,15 8-11 * * 1
- 设定cron的权限
/etc/cron.allow /etc/cron.deny 系统首先判断是否有cron.allow这个文件,如果有这个文件的话,系统会判断这个使用者有没有在cron.allow的名单里面,如果在名单里面的话,就可以使用cron机制。如果这个使用者没有在cron.allow名单里面的话,就不能使用cron机制。 如果系统里面没有cron.allow这个文件的话,系统会再判断是否有cron.deny这个文件,如果有cron.deny这个文件的话,就会判断这个使用者有没有在cron.deny这个名单里面,如果这个使用者在cron.deny名单里面的话,将不能使用cron机制。如果这个使用者没有在cron.deny这个名单里面的话就可以使用cron机制。
- 使用crontab执行bash脚本
0 * * * * /bin/sh /root/start.sh>>result1.log 2>&1
0 * * * * /opt/python36/bin/python3 /root/action.py >>result2.log 2>&1
- 使用crontab监测项目,如果挂掉就重新开启
编写监测脚本monitor.sh
# init,因为 crontab 用的系统变量
source ~/.bash_profile
# grep 服务的端口号,grep LISTEN 表示服务正在正常运行
server=`netstat -nat | grep 3000 | grep LISTEN`
# 如果服务没有开启,sever 会是空的
# 如果服务没有开启,开启;若服务已经开启,输出提示
if [ ! "$server" ];
then
cd /project/
/bin/sh ./start.sh
else
echo "project is running!! "
fi
添加crontab定时任务,每分钟监测一次
* * * * * /bin/sh /project/monitor.sh >> /project/monitor.log 2>&1