>记录生活, 工作的点点滴滴...

crontab Linux定时任务使用

crontab -h #查看帮助
crontab -l #查看当前任务
crontab -e #编辑定时任务, 该参数会打开一个vi编辑器, 用于编辑定时任务, 任务格式如下

# 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

特殊字符:
* 表示所有范围
/ 表示周期, 如/2表示每2分/小时...
- 表示区间

栗子:
1. 0 0 * * * /path/to/myscript.sh
每日0点运行
2. */5 * * * * /path/to/myscript.sh
每5分钟运行
3. 30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每晚的21:30重启apache。
4. 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
5. 10 6 * * * echo I love U
#每天早上6点10分
6. 0 */2 * * * echo I love U
#每两个小时
7. 0 23-7/2,8 * * * echo bunshinn is busy
#晚上11点到早上8点之间每两个小时,早上8点
8. 0 11 4 * mon-wed date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
9. 0 4 1 jan * date
#1月份日早上4点

应用:
Nginx日志分割
a. 编辑shell脚本

#!/bin/bash
#log_backup.sh
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/nginx.pid"

#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`

b. 设置定时任务

crontab -e
0 0 * * * /shell/path/log_backup.sh

发表于:2019-02-16 13:45:55浏览(301) 评论(0) Linux