如何定时清理Linux系统中的Nginx日志

作者&投稿:大狐蒋 (若有异议请与网页底部的电邮联系)
如何定时清理Linux系统中的Nginx日志~

  可以采用crontab定时任务。
  举个例子:
  nginx日志access.log路径为:/app/nginx/logs/access.log
  我另作了一个叫clearlog.sh的文件,路径:/app/myshell/clearlog.sh,内容如下:
> /app/nginx/logs/access.log  意思是把空内容写入到access.log。
  然后在terminal里输入如下命令,开始编辑crontab:
crontab -e  新行编写:
0 */2 * * * sh /app/myshell/clearlog.sh  意思是每两个小时执行一次,然后保存退出(和vim一样的保存退出命令)。
  打完收工~~~~

 Linux系统下Nginx 日志可以查看系统运行记录和出错说明,对Nginx 日志的分析可以了解系统运行的状态。那么Linux系统Nginx日志怎么分析呢?

  Nginx 日志相关配置有 2 个地方:access_log 和 log_format 。
  默认的格式:
  access_log /data/logs/nginx-access.log;
  log_format old ‘$remote_addr [$time_local] $status $request_time $body_bytes_sent ’
  ‘“$request” “$http_referer” “$http_user_agent”’;
  相信大部分用过 Nginx 的人对默认 Nginx 日志格式配置都很熟悉,对日志的内容也很熟悉。但是默认配置和格式虽然可读,但是难以计算。
  Nginx 日志刷盘相关策略可配置:
  比如,设置 buffer,buffer 满 32k 才刷盘;假如 buffer 不满 5s 钟强制刷盘的配置如下:
  access_log /data/logs/nginx-access.log buffer=32k flush=5s;
  这决定了是否实时看到日志以及日志对磁盘 IO 的影响。
  Nginx 日志能够记录的变量还有很多没出现在默认配置中:
  比如:
  请求数据大小:$request_length
  返回数据大小:$bytes_sent
  请求耗时:$request_time
  所用连接序号:$connection
  当前连接发生请求数:$connection_requests
  Nginx 的默认格式不可计算,需要想办法转换成可计算格式,比如用控制字符 ^A (Mac 下 ctrl+v ctrl+a 打出)分割每个字段。
  log_format 的格式可以变成这样:
  log_format new ‘$remote_addr^A$http_x_forwarded_for^A$host^A$time_local^A$status^A’
  ‘$request_time^A$request_length^A$bytes_sent^A$http_referer^A$request^A$http_user_agent’;
  这样之后就通过常见的 Linux 命令行工具进行分析了:
  查找访问频率最高的 URL 和次数:
  cat access.log | awk -F ‘^A’ ‘{print $10}’ | sort | uniq -c
  查找当前日志文件 500 错误的访问:
  cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’
  查找当前日志文件 500 错误的数量:
  cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | wc -l
  查找某一分钟内 500 错误访问的数量:
  cat access.log | awk -F ‘^A’ ‘{if($5 == 500) print $0}’ | grep ’09:00’ | wc-l
  查找耗时超过 1s 的慢请求:
  tail -f access.log | awk -F ‘^A’ ‘{if($6》1) print $0}’
  假如只想查看某些位:
  tail -f access.log | awk -F ‘^A’ ‘{if($6》1) print $3″|”$4}’
  查找 502 错误最多的 URL:
  cat access.log | awk -F ‘^A’ ‘{if($5==502) print $11}’ | sort | uniq -c
  查找 200 空白页
  cat access.log | awk -F ‘^A’ ‘{if($5==200 && $8 《 100) print $3″|”$4″|”$11″|”$6}’
  查看实时日志数据流
  tail -f access.log | cat -e
  或者
  tail -f access.log | tr ‘^A’ ‘|’
  照着这个思路可以做很多其他分析,比如 UA 最多的访问;访问频率最高的 IP;请求耗时分析;请求返回包大小分析;等等。
  这就是一个大型 Web 日志分析系统的原型,这样的格式也是非常方便进行后续大规模 batching 和 streaming 计算。
  以上就是Linux系统Nginx日志怎么分析的全部内容了,可以看出来Nginx日志还是有很强大的作用的。

 可以采用crontab定时任务。
  举个例子:
  nginx日志access.log路径为:/app/nginx/logs/access.log
  我另作了一个叫clearlog.sh的文件,路径:/app/myshell/clearlog.sh,内容如下:

> /app/nginx/logs/access.log

  意思是把空内容写入到access.log。

  然后在terminal里输入如下命令,开始编辑crontab:

crontab -e

  新行编写:

0 */2 * * * sh /app/myshell/clearlog.sh

  意思是每两个小时执行一次,然后保存退出(和vim一样的保存退出命令)。
  打完收工~~~~


领班竞聘演讲稿
能否做好酒店工作,以下几个方面的评判很重要;为进一步提升个人业务技能在工作之余我学习并掌握了如下技能:家用工业用电器维修,电力拖动,低压电器,protel99se(电路板制作)51单片机,avr单片机,pic单片机,plc逻辑控制系统,armlinux嵌入式系统开发。 尊重经验的人,才能少走弯路。如一台设备损坏你可以就该设备的工作原理来...

java定时任务需要一直启动服务器吗?
Java定时任务一般是通过定时器或者定时调度框架来实现的。对于定时任务的执行,通常需要在服务器上运行一个定时任务程序。因此,Java定时任务需要服务器一直运行,才能保证定时任务的正常执行。具体来说,如果服务器因为某些原因停机或者重启,那么定时任务也会因为此而中断。如果需要保证定时任务的连续执行,就...

linux怎么关闭防火墙linux终端关闭
这将强制重新启动Linux机器。3、Halt 我们已经看到了上面的-h开关,但是halt可以单独用作命令。这将导致计算机立即关闭,用一个简单的四个字母单词:halt复制代码 -f开关也可以用于暂停,但结果不一致,并且可能导致系统稳定性问题。4、定时关机 您可能更喜欢poweroff命令的术语。这与halt完全相同,只是它...

linux关机脚本linux关机脚本
这将强制重新启动Linux机器。3、Halt 我们已经看到了上面的-h开关,但是halt可以单独用作命令。这将导致计算机立即关闭,用一个简单的四个字母单词:halt复制代码 -f开关也可以用于暂停,但结果不一致,并且可能导致系统稳定性问题。4、定时关机 您可能更喜欢poweroff命令的术语。这与halt完全相同,只是它...

宜秀区19697799726: 如何定时清理Linux系统中的Nginx日志 -
靳蚂恒迈: nginx日志文件需要手动分割,创建脚本文件clear_log.sh文件路径/usr/local/nginx/clear_log.shvi clear_log.sh.输入如下内容#!/bin/bashcp /usr/local/nginx/logs/error.log /usr/local/nginx/error-$(date -d “yesterday” +“%Y%m%d”).log#先复...

宜秀区19697799726: 如何清空linux中dns缓存 -
靳蚂恒迈: Linux 刷新DNS缓存 开启本地DNS 缓存的服务 chkconfig –list|grep nscd启动本地DNS 缓存服务即可: # service nscd start 反之 # service nscd stop在linux下没有强制清除DNS缓存的命令.我们可以通过删除其后台数据库记录信息,达到清除DNS缓存的目的: # rm /var/db/nscd/hosts # service nscd restartbind 提供的rndc 命令可以清空缓存的功能: # rndc flush

宜秀区19697799726: Linux 系统 shell脚本定时 清空系统日志文件 -
靳蚂恒迈: 其实没有必要写shell脚本,简单一句话放在系统定时任务里就行了.比如你的日志文件名叫a.log.路径为/tmp/a.log;那么你可以写个定时任务,这样做:crontab -e 进入定时任务器,然后把下面这段写到里面00 02 * * * echo " " >/tmp/a.log 然后保存退出就可以了.这段内容意思是,每天凌晨2点自动清空a.log内容.你也可以自己定义多久清一次.比如想10分钟清一次,就这么写*/10 * * * * echo " " >/tmp/a.log.具体的crontab时间定义你可以去百度查查.希望对您有用!

宜秀区19697799726: 如何操作Linux 定时删除指定目下N天前的文件 -
靳蚂恒迈: * 6 * * * find /root/home/zhang/* ctime 1 -exec rm -rf {} \; 表示每天早上六点删除/root/home/zhang目录下一天前创建的所有文件,不删除文件夹zhang,如果这个文件夹也要删除的话用 * 6 * * * find /root/home/zhang ctime 1 -exec rm -rf {} \;* 6 * * * ...

宜秀区19697799726: 如何删除废旧的Linux内核 -
靳蚂恒迈: 1,查看一下当前内核版本:uname -a 2.查看一下当前系统内的所有内核文件:dpkg --get-selections|grep linux 3.删除内核文件: sudo apt-get remove linux-headers-2.6.32-24-generic sudo apt-get remove linux-headers-2.6.32-24 这样就成功删...

宜秀区19697799726: linux怎么定义脚本自动清理log -
靳蚂恒迈: 确定日志所处磁盘的使用情况,一般使用率达到80%就可以进行清理了. 接着起个定时任务: crontab -e 输入: 0/30 * * * * /xxx/clearLog.sh 每隔30分钟检测一次磁盘使用情况

宜秀区19697799726: Linux下如何清理系统垃圾 - 附BleachBit清理工具是中文的 -
靳蚂恒迈: ,使用以下命令清理系统垃圾 sudo apt-get autoclean --清理旧版本的软件缓存 sudo apt-get clean--清理所有软件缓存 sudo apt-get autoremove--删除系统不再使用的孤立软件2,清理opera firefox的缓存文件:ls ~/.opera/cache4 ls ~/.mozilla/firefox/*.default/Cache3,清理Linux下孤立的包:图形界面下用:gtko

宜秀区19697799726: 如何清除linux的内存缓存,缓冲和交换空间 -
靳蚂恒迈: linux和其他操作系统一样,已经实现了很有效的内存管理机制,但是任何一个进程损坏了系统的内存,那么你就必须清理它,linux提供了一个比较好的方式刷新\清除RAM缓存.注意:并不是什么时候都需要清除RAM缓存的,大家都知道,linux...

宜秀区19697799726: 如何实现Linux tmp目录自动清理 -
靳蚂恒迈: linux本身就会定时清理tmp临时文件夹的.用户不需要自行再做相应的处理.这也是linux高效的一个方面 .

宜秀区19697799726: 定期清理linux服务器日志文件的几个思路 -
靳蚂恒迈: 定期清理linux服务器日志文件的几个思路1,在跑批程序中,用java代码调用shell脚本;2,在跑批程序中,用纯java代码实现,也就是使用java的文件操作类File;3,纯shell脚本方式,使用linux服务器的调度程序调用shell脚本;结合最近的项目,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网