Linux 作业调度器 crond

linux缺省会启动crond进程,crond进程不需要用户启动、关闭。 
需要启动/关闭cron
/sbin/service crond start   --启动服务
/sbin/service crond stop   --关闭服务
/sbin/service crond restart  --重启服务
/sbin/service crond reload   --重新载入配置
crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。 
cron的调度文件
有以下几个:
crontab
cron.d
cron.daily
cron.hourly
cron.monthly
cron.weekly
如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
 
存放文件 
/etc/cron.deny 文件列出所有不允许使用 crontab命令的用户
/etc/cron.allow 文件所列的用户允许使用crontab命令
/var/spool/cron  所有用户的crontab文件
/var/spool/cron/crontabs 
 
1、直接用crontab 命令编辑
cron服务提供 crontab 命令来设定cron
命令格式为:crontab -l|-r|-e|-u [username]
参数含义:
crontab -l 列出某个用户的cron服务内容
crontab -e 编辑某个用户的cron 的内容
crontab -r 移除某个用户的cron的所有内容
crontab -u 设定某用户的cron服务
命令如:
root 查看自身的cron设置:crontab -u root -l
删除用户test的cron设置:crontab -u test -r
 
内容格式:* * * * *命令前面的五个*号,表示分,时,日,月,周
如:代表意义   分钟   小时   日期   月份   周
        数字范围   0-59  0-23    1-31  1-12  0-7
 
例如:#crontab -e59 23 1 5 * mail linuxing < /home/test.txt
每在5月1日,23点59分就把/home/test.txt的内容作为邮件发给linuxing用户

*/5 * * * * /opt/test.sh    每5分钟就执行一次/opt/test.sh脚本
0 3,6 * * * /usr/local/bin/test.sh    每在3点和6点整点都执行/usr/local/bin/test.sh命令
0 8-12 * * * /root/backup.sh   8 点到 12 点之间的每小时的0分都执行/root/backup.sh
0 */2 * * * echo "Have a break now." >> /tmp/test.txt     每两个小时
0 23-7/28 * * * echo "Have a good dream:)" >> /tmp/test.txt  晚上11点到早上8点之间每两个小时,早上八点 
0 11 4 * 1-3 command line    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 4 1 1 * command line     1月1日早上4点
01 6 * * * find /home/mysql/databack/* -mtime 30 -print|xargs rm -rf  定时清除 数据库备份

 

 

2、编辑/etc/crontab 文件配置cron

 cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

此文件的文件格式是:

  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
  HOME=/ //使用者运行的路径,这里是根目录
  # run-parts
  01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
  02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
  22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
  42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

 

 

  大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

典型例子:

定时备份mysql 数据库

1、crontab -e

2、01 3 * * * /home/backmysql

3、vim /home/backmysql

#!/bin/sh

rq=`date +%Y%m%d`

mysqldump -uroot -p123456 teatop_db --skip-lock-tables >/mysqldata/databack/mysql$rq.sql

4、/sbin/service crond restart

 

定时备份redis

1、crontab -e

2、01 3 * * * /home/redis.sh

3、vim /home/redis.sh

#!/bin/sh

rq=`date +%Y%m%d`

mkdir /mysqldata/redis/redis$rq

cp -R /usr/redisdata/* /mysqldata/redis/redis$rq

4、service crond restart

 

Linux 作业调度器 crond,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。