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