centos 6.x脚本在某时间自动执行

2019-1-7    分类: wordpress教程

centos linux 脚本 自动执行 脚本

在linux系统,希望某时间段自动执行一些脚本。可以操作如下:

1,安装

yum install crontabs

 

2,安装完成后,会有如下文件

使用者权限文件:

文件:/etc/cron.deny

说明:该文件中所列用户不允许使用crontab命令

 

文件:/etc/cron.allow

说明:该文件中所列用户允许使用crontab命令

 

文件:/var/spool/cron/

说明:所有用户crontab文件存放的目录,以用户名命名

 

我们一般要编辑的是:/etc/crontab

案例:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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
45 4 1 * * /etc/init.d/mysqld restart     //这里就是我加的,每月1号的4点45分执行/etc/init.d/mysqld restart

不明白那些参数对照着下面的图就会明白了

45 4 1 * * /etc/init.d/mysqld restart   //每月1号的4点45分执行/etc/init.d/mysqld restart
--------------------
1.每晚的21:30重启nginx:30 21 * * * /etc/init.d/nginx restart
2.每月1、 10、22日的4 : 45重启nginx:45 4 1,10,22 * * /etc/init.d/nginx restart
3.每一小时重启nginx:* */1 * * * /etc/init.d/nginx restart
4.晚上11点到早上7点之间,每 隔一小时重启nginx:* 23-7/1 * * * /etc/init.d/nginx restart
--------------------- 

实例1:每1分钟执行一次command

命令:

* * * * * command

实例2:每小时的第3和第15分钟执行

命令:

3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 * * * command

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb 

命令:

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb 

命令:

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

命令:

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 

命令:

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb 

命令:

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb 

命令:

* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb 

命令:

* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb 

命令:

0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb 

命令:

0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本

命令:

01   *   *   *   *     root run-parts /etc/cron.hourly

 

 

 

3,启动、重启、停止

查看crond服务状态:service crond status
启动crond服务:service crond start
停止crond服务:service crond stop
修改了配置,重新载入配置:service crond reload
查看crond服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:chkconfig --level 35 crond on

 

 

4,执行自定义脚本

案例:mysql备份脚本

#!/bin/sh

DB_USER=root
DB_PASS=****
DB_NAME=xxx
DB_BKPATH="/usr/local/backup"
DATE=`date +%Y%m%d%H%M`
HOUR_AGO=`date +%Y%m%d%H -d "-1 hour" `

cd ${DB_BKPATH}
mysqldump --opt -u${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_BKPATH}/${DB_NAME}_${DATE}.sql
rm -rf ${DB_BKPATH}/${DB_NAME}_${HOUR_AGO}*

要定时执行使用crontab -e来添加定时备份数据库,目前为每6个小时备份一次,具体命令为:

输入crontab -e命令,进入vim编辑模式直接加入以下命令,保存退出即可。
* */6 * * * sh /usr/local/backup/mysql_backup.sh

 

 

参考:

http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

https://blog.csdn.net/chen_jianjian/article/details/48706465