我是靠谱客的博主 隐形草莓,最近开发中收集的这篇文章主要介绍定时分割文件脚本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、序言

       这里有个任务,通过每天用户的登录日志文件,对固定信息进行切割,然后保存到新的文件,并上传到另外的服务器进行处理。

 

二、日志信息:

    当天的日志文件名:webapp-login.log

    日志主要内容:

 

[INFO ] [16:09:31] LOGIN - 张三(803521136) - pramms_xxxxxxxxx
[INFO ] [16:09:35] LOGIN - 李四(803521136) - pramms_xxxxxxxxx
[INFO ] [16:09:35] LOGIN - ERROR - 王五(803521136) - pramms_xxxxxxxxx
[INFO ] [17:09:31] LOGIN - 张三(803521136) - pramms_xxxxxxxxx

 

 

三、命令执行过程如下:

       1.找到当天文件 :

           cat  /log/webapp-login.log

 

        2.找到含有 LOGIN 并不含有 ERROR 的信息

           grep  "LOGIN" | grep -v "ERROR" 

 

        3.按“ - ” 进行分割,找到获取第二组文字信息,注意加空格

           awk -F ' - ' '{print $2}'

           会得到这样的我字符串:张三(803521136)

 

        4.同理按"(" 分割,获取第一组 字符串

           awk -F '(' '{print $2}'

           得到:张三

 

        5.默认排序

           sort

       

        6.同行统计:排序后,可以连续出现过几次,表示一天登录过几次

           uniq -c

           得到:2 张三 

 

        7. 按出现次数 大 到小 排除,并输出到当前loginInfo 目录文件

            sort -nr >> ./loginInfo/loginfo.info

 

        该命令完整如下:

       

cat /log/webapp-login.log
| grep "LOGIN" | grep -v "ERROR" | awk -F ' - ' '{print $2}' | awk -F '(' '{print $1}' | sort | uniq
-c|sort -nr >> login.info

       文件结果如下:

 

       

 2
张三
1
李四

 

 

四、我们要定时执行这个脚本,脚本命名为 :createLoginInfo.sh

      1进入文件目录,遍历该文件

       

#!/bin/bash
# 描述: 统计用户登录信息
# 作者:xxx
# 时间:2015-03-05
# 创建个函数
function uplodaLoginInfo(){
# 进入文件目录
cd /log
#遍历文件,这里用ls 可以遍历N个文件,例子只有一个
for file in 'ls weapp-login.log '
# 执行
do
# 输出文件变量名
echo $file
date=`date '+%Y-%m-%d'`
# 文件拆分
cat /log/webapp-login.log
| grep "LOGIN" | grep -v "ERROR" | awk -F ' - ' '{print $2}' | awk -F '(' '{print $1}' | sort | uniq
-c|sort -nr >> ./loginInfo/login.info
# 上传到某个域名下的服务器
# curl 下面单独写,不需要可以不用
done
echo "uploadWeb4Log done";
}
# 建一个目录
mkdir -p loginInfo

 

 

   

  五、 shell 模拟表单提交        

    

#命令:
curl
# 参数文件路径 $file 是上面你的文件变量名
-F "file=@loginInfo/"$file".info"
# 参数日期
-F "date="$date
# 参数密码
-F "password=web4"
# 参数名字
-F "name=admin"
# 参数文件名
-F "filename="$file".info"
# 请求的地址
http://www.xxxx.xxx.getFile

 

 

六、定时任务

     用的基本的crontab -e  打开,基本的cron 表达式的

     假设每分钟执行一次命令:

     * * * * * createLoginInfo.sh

     

 

  小结:

        1.linux 命令不熟悉,如有错误请指出,这里仅仅记录下 基本的

        2.关于文件分割 以及 curl  的强大命令,比较多,下面贴一些我参考的东西

-- awk 命令

http://blog.chinaunix.net/uid-23302288-id-3785105.html

 

-- sort 命令

http://www.2cto.com/os/201304/203309.html

 

-- curl 命令

http://www.aiezu.com/system/linux/linux_curl_syntax.html

 

-- crontab

http://www.jb51.net/LINUXjishu/19905.html

最后

以上就是隐形草莓为你收集整理的定时分割文件脚本的全部内容,希望文章能够帮你解决定时分割文件脚本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部