perl按日期归档日志

perl按日期归档日志,第1张

概述帮一上海朋友工厂维护一台freebsd服务器,该服务器上运行着squid等服务。服务器上有一支perl程序会每天定时的切割当天的squid日志,以日期形式保存在某目录下,大体如下: -rw-r--r--  1 root  wheel   51827130 Aug 20 04:27 20110801.log  -rw-r--r--  1 root  wheel   56

帮一上海朋友工厂维护一台freebsd服务器,该服务器上运行着squID等服务。服务器上有一支perl程序会每天定时的切割当天的squID日志,以日期形式保存在某目录下,大体如下:

  -rw-r--r--  1 root  wheel   51827130 Aug 20 04:27 20110801.log     -rw-r--r--  1 root  wheel   56598624 Aug 20 04:27 20110802.log     -rw-r--r--  1 root  wheel   66925544 Aug 20 04:27 20110803.log     -rw-r--r--  1 root  wheel   47917440 Aug 20 04:27 20110804.log     -rw-r--r--  1 root  wheel   44134286 Aug 20 04:27 20110805.log     -rw-r--r--  1 root  wheel   43705704 Aug 20 04:27 20110808.log     -rw-r--r--  1 root  wheel   33358662 Aug 20 04:27 20110809.log     -rw-r--r--  1 root  wheel   35820354 Aug 20 04:27 20110810.log     -rw-r--r--  1 root  wheel   48065784 Aug 20 04:27 20110811.log     -rw-r--r--  1 root  wheel   38021175 Aug 20 04:27 20110812.log     -rw-r--r--  1 root  wheel   30382856 Aug 20 04:27 20110813.log     -rw-r--r--  1 root  wheel   11898255 Aug 20 04:27 20110815.log     -rw-r--r--  1 root  wheel   10068232 Aug 20 04:27 20110816.log     -rw-r--r--  1 root  wheel   12431556 Aug 20 04:27 20110817.log     -rw-r--r--  1 root  wheel    6405197 Aug 20 04:27 20110818.log     -rw-r--r--  1 root  wheel    5054207 Aug 20 04:27 20110819.log     -rw-r--r--  1 root  wheel    3455222 Aug 26 04:14 20110821.log     -rw-r--r--  1 root  wheel  124680376 Aug 26 04:14 20110822.log     -rw-r--r--  1 root  wheel  150105140 Aug 26 04:14 20110823.log     -rw-r--r--  1 root  wheel    5183330 Aug 26 04:14 20110824.log     -rw-r--r--  1 root  wheel    6486877 Aug 26 04:14 20110825.log     -rw-r--r--  1 root  wheel    8481735 Sep  2 04:03 20110828.log     -rw-r--r--  1 root  wheel   22789068 Sep  2 04:03 20110829.log     -rw-r--r--  1 root  wheel   68841800 Sep  2 04:03 20110830.log   

要求:编写一脚本程序,对该目录中日志以年月的形式进行归档,如201108.tar.gz

代码如下:

  #!/usr/bin/perl -w          use strict;     use Shell qw/mv/;     use file::Path qw/remove_tree/; //调用该模块的目的是为了删除归档前的非空目录         my %log;          if ( $< != 0 ) {        printf "%s","You must run this script as root\n";              opendir LOG,'/data/squID_log' or dIE "$!\n";          while ( my $file = readdir LOG ) {             chomp $file;             next unless $file =~ /^(\d{6})\d+/;             push @{$log{}},$file;              closedir LOG;          for my $str ( sort keys %log ) {         my @array = @{$log{$str}};         mkdir $str,0755;         my $sh = Shell->new();         $sh->mv("@array $str");         system("tar czvf ${str}.tar.gz $str");         remove_tree("$str",{ verbose => 1,});            

归档过程:

  a 201102     a 201102/20110213.log     a 201102/20110214.log     a 201102/20110218.log     a 201102/20110220.log     a 201102/20110221.log     a 201102/20110222.log     a 201102/20110223.log     a 201102/20110224.log     a 201102/20110225.log     a 201102/20110228.log     unlink 201102/20110213.log     unlink 201102/20110214.log     unlink 201102/20110218.log     unlink 201102/20110220.log     unlink 201102/20110221.log     unlink 201102/20110222.log     unlink 201102/20110223.log     unlink 201102/20110224.log     unlink 201102/20110225.log     unlink 201102/20110228.log     rmdir 201102     ……………………………………………………………………  

最后归档后的效果:

  [/data/squID_log]# ll     total 203762     -rw-r--r--  1 root  wheel  12817056 Sep 16 20:49 201012.tar.gz     -rw-r--r--  1 root  wheel   8170954 Sep 16 20:49 201101.tar.gz     -rw-r--r--  1 root  wheel   8819026 Sep 16 20:49 201102.tar.gz     -rw-r--r--  1 root  wheel  15008666 Sep 16 20:49 201104.tar.gz     -rw-r--r--  1 root  wheel  10950252 Sep 16 20:49 201105.tar.gz     -rw-r--r--  1 root  wheel  70723508 Sep 16 20:50 201106.tar.gz     -rw-r--r--  1 root  wheel  13035446 Sep 16 20:50 201107.tar.gz     -rw-r--r--  1 root  wheel  63533990 Sep 16 20:51 201108.tar.gz     -rw-r--r--  1 root  wheel   5290849 Sep 16 20:51 201109.tar.gz     -rwx------  1 root  wheel       646 Sep 16 17:30 log.pl   
总结

以上是内存溢出为你收集整理的perl按日期归档日志全部内容,希望文章能够帮你解决perl按日期归档日志所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1286801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存