精华内容
下载资源
问答
  • nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理这就需要我们自己来实现了,日期每天生产一个日志文件思路每天零点把默认日志文件改名...

    nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理

    这就需要我们自己来实现了,按日期每天生产一个日志文件

    思路

    每天零点把默认日志文件改名为当天日期,再重新打开新的日志文件

    使用定时任务来执行脚本,脚本中执行改名和重新打开日志文件的操作

    向Nginx主进程发送 USR1 信号,就可以重新打开日志文件

    实现

    #/bin/bash

    #备份日志的路径

    bakpath='/home/nginx/logs'

    #nginx日志路径

    logpath='/usr/local/nginx/logs'

    #在备份路径下创建年月子目录

    mkdir -p $bakpath/$(date +%Y)/$(date +%m)

    #移动日志文件到备份路径,并改名为日期格式

    mv $logpath/access.log $bakpath/$(date +%Y)/$(date +%m)/access.$(date +%Y%m%d).log

    mv $logpath/error.log $bakpath/$(date +%Y)/$(date +%m)/error.$(date +%Y%m%d).log

    #用 USR1 信号让nginx重新打开日志文件

    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    展开全文
  • logrotate 程序是一个日志...系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。在centos上脚本内容是这样的: /usr/sbin/logrotate /etc/logrotate.co

    logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行

    安装后系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。在centos上脚本内容是这样的:

    /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
        /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
    

    此文件中只是执行了logrotate命令,然后传递一个配置参数。我们可以新建自己的脚本来执行logrotate命令,然后把脚本加入crontab中,就可以自定义文件分割了。

    logrotate参数

    logrotate参数说明

    compress 通过gzip 压缩转储以后的日志
    nocompress 不做gzip压缩处理
    create mode owner group 轮转时指定创建新文件的属性,如create 0777 nobody nobody
    nocreate 不建立新的日志文件
    delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
    nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
    missingok 如果日志丢失,不报错继续滚动下一个日志
    ifempty 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
    notifempty 当日志文件为空时,不进行轮转
    mail address 把转储的日志文件发送到指定的E-mail 地址
    olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
    noolddir 转储后的日志文件和当前日志文件放在同一个目录下
    sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
    prerotate 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
    postrotate 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
    daily 指定转储周期为每天
    weekly 指定转储周期为每周
    monthly 指定转储周期为每月
    rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
    dateext 使用当期日期作为命名格式
    dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
    size(或minsize) log-size 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
    当日志文件 >= log-size 的时候就转储。 以下为合法格式:(其他格式的单位大小写没有试过)
    size = 5 或 size 5 (>= 5 个字节就转储)
    size = 100k 或 size 100k
    size = 100M 或 size 100M

    实战

    在logrotate.d下面新建一个文件,文件名随意
    如下内容,日志路径根据自己的修改

    /data/nginx/log/*.log {
            su root root
            rotate 180
            daily
            copytruncate
            dateformat .%Y%m%d
            compress
            notifempty
            missingok
    }
    

    执行下面的命令测试一把

    /usr/sbin/logrotate -f /etc/logrotate.conf
    

    如果没有成功,再执行下面的命令排查问题

    /usr/sbin/logrotate -v -f -d /etc/logrotate.d/
    
    展开全文
  • Linux nginx日志按天分割实例

    千次阅读 2018-07-08 22:40:07
    Linux nginx日志按天分割实例 nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理 这就需要我们自己来实现了,按日期每天生产一个日志文件...

    Linux nginx日志按天分割实例

    nginx的日志有个小缺点,日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将导致日志文件非常大,不便于管理

    这就需要我们自己来实现了,按日期每天生产一个日志文件

    思路

    每天零点把默认日志文件改名为当天日期,再重新打开新的日志文件

    使用定时任务来执行脚本,脚本中执行改名和重新打开日志文件的操作

    向Nginx主进程发送 USR1 信号,就可以重新打开日志文件

    实现

    /bin/bash

    备份日志的路径

    bakpath=’/home/nginx/logs’

    nginx日志路径

    logpath=’/usr/local/nginx/logs’

    在备份路径下创建年月子目录

    mkdir -p bakpath/(date +%Y)/$(date +%m)

    移动日志文件到备份路径,并改名为日期格式

    mv logpath/access.logbakpath/(date+(date +%m)/access.$(date +%Y%m%d).log

    mv logpath/error.logbakpath/(date+(date +%m)/error.$(date +%Y%m%d).log

    用 USR1 信号让nginx重新打开日志文件

    kill -USR1 cat /usr/local/nginx/logs/nginx.pid

    展开全文
  • 上一篇我们提到了,定时执行我们清除nohup.out里面内容的.sh脚本文件,那么,其中的 *和/2分别代表什么意思呢? 我们来看下crontab: 其中 *1 *2 *3 *4 *5 program *1:分钟 (0 - 59) *2:小时 (0 - 23) *3...

    上一篇我们提到了,定时执行我们清除nohup.out里面内容的.sh脚本文件,那么,其中的 *和/2分别代表什么意思呢?

    我们来看下crontab:

    其中 

    *1    *2    *3    *4    *5    program

    *1:分钟 (0 - 59)

    *2:小时 (0 - 23)

    *3:一个月中的第几天 (1 - 31)

    *4:月份 (1 - 12)

    *5:星期中星期几 (0 - 7) (星期天 为0)

    program:代表要定时执行的程序

    上篇例子中

    */2 * * * * sh /home/auto-del-nohup.sh &
    

    代表的就是每隔2分钟执行一次“auto-del-nohup.sh”这个脚本

    展开全文
  • 建立一个脚本文件,并保证这个文件有可执行的权限:1、建立一个文件/root/log.nginx.sh(这里只是作为演示,实际上这个脚本文件你可以随意的放在哪个目录和给它取一个你喜欢的名字),在文件里面粘贴如下内容: ...
  • 编写Linux执行脚本moveLog.sh(目录为: /usr/local/tomcat) #!/bin/sh 设置日志文件所在位置 source_home=/usr/local/tomcat 设置日志文件需要迁移的位置(source_home和dest_home可以是同一个目录) dest_home=/user/...
  • 1. 编写Linux执行脚本moveLog.sh(目录为: /usr/local/tomcat) #!/bin/sh # 设置日志文件所在位置 source_home=/usr/local/tomcat # 设置日志文件需要迁移的位置(source_home和dest_home可以是同一个目录) dest...
  • 本文介绍在Linux系统中运行特定时间的命令,有两种方法,使用timeout命令或Timelimit程序。背景前几我使用rsync将一个大文件传输到我所在局域网的另一个系统。由于它是一个非常大的文件,大约需要20分钟才能完成。...
  • Linux第七

    2020-07-08 17:01:53
    【苏嵌实训-嵌入式 linux C 第7】 今日进度以及任务 宏定义编码规范 学习了数组的定义及初始化;数组名的作用,一维数组,二维数组,三维数组;数组指针,指针数组,main函数参数命令行参数 本日任务完成情况 ...
  • logrotate 介绍-----------------------...我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。logrota...
  • linux基础第一

    2021-05-06 16:25:40
    本质:根据命令名字,调用对应的可执行程序 2 linux快捷键 ctrl+p 向上 ctrl+n 向下 ctrl+b 向前 ctrl+f 向后 ctrl+a 头部 ctrl+e 尾部 ctrl+h 向前删除 ctrl+d 向后删除 ctrl+u 删除光标前面 tab 智能补齐(一次...
  • 我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会↑↓箭头来寻找历史的命令记录,那如果我想用1执行的某条命令,难道还要↑100次?显示这样是不现实的,我们可以使用history...
  • linux环境下自动执行python脚本

    千次阅读 2016-12-20 20:00:06
    说明:此文针对需要用hive来查询长时间数据的人员,而且是需要按照天来输出查询数据,考虑到如果查询多天的,数据量过大会造成集群拥堵,所以按天输出,最终再做汇总。 需求来源:如果你每天接触的都是日志类数据,...
  • linux实现天生成日志文件并自动清理 前篇文章中讲到如何在Linux crontab创建每秒执行的方法,高人可能早意识到日志文件没做处理,假如没人工处理久了日后越来越大肯定会出现问题,当然人工处理也不现实。为了解决...
  • Linux第三01

    2016-01-27 11:11:10
    1.cat  显示文本文件内容  concatenate files and print on the standard output....  -n 显示行号 -E 用$符号显示行尾 ... eg: cat -n /gcc/a.java /gucc/b.java ... cat 后若什么都没敲,然后直接回车...Ctrl + c
  • 学习linux的第十九

    2019-09-20 12:30:34
    我们执行的命令linux都有记录,预设可以记录1000条的历史命令。这些命令都保存在用户的家目录.bash_history。但是需要记住的是,只有当用户正常退出当前的shell时,在当前的shell中运行的命令才会保存。 还有就是...
  • Linux基础 第十四

    2020-07-31 11:25:48
    文件的权限可以设置三个不同的限制(用户分)。 第一个限制被称为是“属主”,也就是USER。 第二个限制被称为是“数组”,也就是GROUP。 第三个限制被称为是“其他人”,也就是OTHER。 紫色框表示属主,白色框...
  • 前言Cron job是指定间隔执行的任务,可以将任务安排为分钟,小时,每月的某,某月,某周的某或它们的任意组合运行。Cron job通常用于自动进行系统维护或管理,例如备份数据库或数据,使用最新的安全补丁更新...
  • Linux C学习第三

    2019-01-22 21:13:38
    1.创建并打开文件 例:vim Hello.c vim三种模式: (1)命令模式:vim一打开文件就是命令模式,此时不可写代码。 (2)插入模式:在命令模式下...则表示强制 执行。 x:删除一个字符,n(n=1,2,3,4……)x删除n个字...
  • CentOS Linux自动备份文件日期备份

    千次阅读 2019-05-21 22:51:12
    我这里要把/data/wwwroot目录下面的所有文件备份到/data/backup里面,并且保存为wwwrootbak20190520.tar.gz的压缩文件(20190520是指备份执行时当天的日期2019-5-20),然后只保留最近30的备份。 1、创建保存...
  • 因为需要将日志文件发送到ftp中保存,但是同一个日志...后来发现,同一内该日志也可能被覆盖多次,故需要多次执行脚本。 改为“用文件修改日期存文件名” currentDate=`date +%s` modifyDate=$(stat -c %Y ...
  • 命令:cat (中文猫的意思) 解释:cat命令连接文件并打印到标准输出设备上(如显示器),cat经常用来显示文件的内容 ...Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 语法...
  • 今天学习vi编辑命令; root@ubuntu:vi hello.java 使用到的命令: 插入命令: ...a和i:在当前光标前或后插入文本(A和I分别在当前行行末或行首插入文本);...编辑完后,Esec,执行保存命令:(:w...
  • 第三:条件选择 大 纲 应用实例分析 条件测试 if…else…fi case…in…esac 实现功能菜单: 执行脚本后 1,显示当前时间 2,显示CPU负载 3,显示剩余内存 0,退出脚本 其他字符,提示超出...
  • 一条Linux指令-trap

    2016-11-07 19:51:21
    比如,Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序。如果要在Ctrl+C不退出程序,那么就得使用trap命令来指定一下SIGINT的处理方式了。trap命令不仅仅...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 226
精华内容 90
关键字:

linux按天执行

linux 订阅