Linux(Centos)定时任务 nginx日志定时备份的shell脚本

#!/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 * * * *

猜你喜欢

转载自blog.csdn.net/php12345679/article/details/80772853