概述
一、序言
这里有个任务,通过每天用户的登录日志文件,对固定信息进行切割,然后保存到新的文件,并上传到另外的服务器进行处理。
二、日志信息:
当天的日志文件名: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
最后
以上就是隐形草莓为你收集整理的定时分割文件脚本的全部内容,希望文章能够帮你解决定时分割文件脚本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复