Linux 定时执行shell脚本命令之crontab

crontab可以在指定的时间执行一个shell脚本以及执行一系列Linux命令

例如:服务器管理员定时备份数据库数据、日志等

 

详解:

常用命令:

crontab –e     //修改 crontab 文件,如果文件不存在会自动创建。 
crontab –l      //显示 crontab 文件。 
crontab -r      //删除 crontab 文件。
crontab -ir     //删除 crontab 文件前提醒用户。

service crond status     //查看crontab服务状态
service crond start     //启动服务 
service crond stop     //关闭服务 
service crond restart     //重启服务 
service crond reload     //重新载入配置

 

基本格式 :

*  *  *  *  *  command
分 时  日  月  周  命令

第1列表示分钟00~59 每分钟用*或者 */1表示

第2列表示小时00~23(0表示0点)

第3列表示日期01~31

第4列表示月份01~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

 

部分举例:

1、在 凌晨00:10运行

10 0 * * * /home/swz/aa.sh

2、每个工作日23:59都进行备份作业。

59 23 * * 1,2,3,4,5 /home/swz/aa.sh   或者  59 23 * * 1-5 /home/swz/aa.sh

3、每分钟运行一次命令

*/1 * * * * /home/swz/aa.sh

4、每个月的1号 14:10 运行

10 14 1 * * /home/swz/aa.sh

5、每10分钟定时请求一个地址

0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php

 

正确、错误日志的输出是否写入到文件方法:

1.不输出任何内容(建议使用方法一)

*/1 * * * * /root/XXXX.sh >/dev/null 2>&1*/1 * * * * /root/XXXX.sh &>/dev/null    //&表示任何内容

2.将正确和错误日志都输出到 /tmp/load.log

*/1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1

3.只输出正确日志到 /tmp/load.log

*/1 * * * * /root/XXXX.sh > /tmp/load.log*/1 * * * * /root/XXXX.sh 1> /tmp/load.log    //1可以省略

4.只输出错误日志到 /tmp/load.log

*/1 * * * * /root/XXXX.sh 2> /tmp/load.log

部分解释:

/dev/null 代表空设备文件
> 代表重定向到哪里
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

 

加锁脚本写法:

*/30 * * * * cd /home/homework/script && flock -xn dataSync.lock /home/homework/php/bin/php dataSync.php  >> dataSync.log 2>&1

 

秒级脚本写法:

#!/bin/bash
step=10 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
    $(cd /home/homework/script && flock -xn dataSync.lock /home/homework/php/bin/php dataSync.php)
    sleep $step
done
exit 0
posted @ 2018-02-08 17:47  申文哲  阅读(22597)  评论(2编辑  收藏  举报