#!/bin/bash
base_path="/data"
log_base="/usr/local/nginx/logs"
log_path=${base_path}/$(date -d yesterday +"%Y%m%d")
mkdir -p $log_path
mv $log_base/access.log $log_path/$(date -d yesterday +"%Y%m%d%H%M").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
注意:1.shell脚本开头必须为 #!/bin/bash
2.定时任务设置命令 crontab -e 打开文本加入 */1 * * * * /data/runlog.sh 每分钟执行一次 *后面为shell脚本的绝对路径
3. 补充些定时任务的知识
Linux crontab是用来定期执行程序的命令
代表覆盖写入 >
追加写入 >>
写入命令 crontab -e 回车
写入运行数进程 * * * * * /usr/bin/php (这里是空格) /phpcode/test.php >> /phpcode/a.txt
#注释 或删掉 之后就会结束进程
而linux任务调度的工作主要分为以下两类
1、系统执行的工作:
系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:
某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,
这些工作可由每个用户自行设置
语法
crontab [ -u user ] file
说明:
crontab
是用来让使用者在固定时间或固定间隔执行程序之用
,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数说明:
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,
如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器]
(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表
时程表的格式如下:
f1 f2 f3 f4 f5 program
f1 是表示分钟
f2 表示小时
f3 表示一个月份中的第几日
f4 表示月份
f5 表示周
program 表示要执行的程序
当 f1 为 * 时表示每分钟都要执行 program,
f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行;
f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推;
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次
f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,
f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
定义crontab命令
分 小时 日 月 星期 命令或执行的shell脚本目录
0-59 0-23 1-31 1-12 0-6
特殊符号:* 范围的所有数字, / 每 , - 范围 , ‘,’集合
每隔30分钟,每天晚上的凌晨3点-5点:*/30 3-5 * * *
每30分钟执行一次任务 */30 * * * *