linux下私房工具箱
时间:2010-11-14 来源:言 午
在当前目录下按照文件大小倒排序,显示百分比,并以K,M,G为单位,提高信息的可读性:
du -sb ./* | sort -nr | gawk 'BEGIN{"du -sb ."|getline;total=$1;printf "\nTOTAL: %8s\n",kmg(total)}function kmg(innum) {if(innum/1024/1024/1024>1){field=innum/1024/1024/1024"G"} else if(innum/1024/1024>1){field=innum/1024/1024"M"} else if(innum/1024>1){field=innum/1024"K"} else{field=innum} return field}{printf "%-2.2f%%\t%8s\t%s\n", $1/total*100,kmg($1),$2}'
使用awk进行文件统计:
1、统计日志中IP的条数
awk '{a[$1] += 1};END{for(ip in a){print a[ip],ip}}' 2010-06-09.txt
2、查找500条符合条件的记录
awk '{if($1 ~ /172\.22\.3\.35/){num +=1; print}; if(num > 200){exit}}' 2010-06-09.txt;
3、根据URL ?前的字符串进行倒排序
awk '{gsub("\?.*","",$8); a[$8] += 1}; END{for(url in a){print a[url], url}}' /home/admin/alibaba_web_logs/syslog-ng/china/2010-06-11/2010-06-11.txt | sort –nr
统计目录下指定文件或文件夹的大小汇总:
du -ch a*|grep total
创建文件,指定文件时间:
touch -d "May 24 3:51 pm" test/a/May24.txt
ldd和file命令:
1、首先ldd不是一个可执行程序,而只是一个shell脚本 2、ldd能够显示可执行模块的dependency
file识别各种不同的文件类型
设置符号链接(软链接):
ln -s /disk2/history_cookielog/history_asc history_asc
查看每小时从收集机器下载到本地的各个文件大小:
du -sh /data/work/EnLog/BeaconLog/20101011/*
查看目录信息:
du -sk ./* | sort -n
du -sh ./*
[文件查找、比对类]
多行替换:
1、在UE下,查找:(.*)\p ,替换为:alias \1='ssh \1'\p
2、在linux下使用:
sed "s/\(.*\)/alias \1='ssh \1'/" test_file
diff文件比对结果输出:
diff -y -W 130 --suppress-common-line ./OfferDetail.2010.08.23.txt ./cx300/OfferDetail.2010.08.23.txt | head -n 10
-y表示并列输出
-W指定在并列输出时候的列宽
--suppress-common-lines 只输出不同的内容
查找最大的文件:
find ./ -size +800000000c -print | grep bz2 | xargs ls -alh | sort +4
或者:
du -ah * | grep bz2 | sort -nr | head
查找文件时,如何过滤没有权限等异常信息的输出:
find / -name iplib.pm 2>/dev/null
用以下命令:
find . -name '1^cookie_log.jp_search*.bz2'
找到了一堆文件,现在想将这些找到的文件打包,用tar -cvf,怎么写?
find . -name '1^cookie_log.jp_search*.bz2' | xargs tar cvf ....
试试看,或者:
find . -name '1^cookie_log.jp_search*.bz2' -exec tar -rvf all_search.tar {} \;
对于find命令 -exec 和 -ok 一样,只是 -ok 需要一一确认
查找目录A下不包含目录B的所有文件,删除创建时间在2天前的文件:
find ./A -path "./A/B" -prune -o -type f -mtime +2 -ok rm {} \;
grep多个或条件:
ls | grep -E "a|b" 或者 grep 'usrquota\|grpquota' /etc/fstab
grep使用逆向查找,将日志中所有的URL找出:
grep -v '/collector.alibaba.com/reg1point.html' cookie_log.04.01 | grep -v '/collector.alibaba.com/reg2point.html' | grep -v '/collector.alibaba.com/reg2snap.html' | grep -v '/collector.alibaba.com/reg1field.html' | grep -v '/collector.alibaba.com/reg2field.html' | grep -v '/collector.alibaba.com/'m/''
[系统性能监控、命令跟踪类]
系统状态查看:
memory:free -m
disk: df -h
load: uptime、w
其他: top -n 1 | col -b > top.txt
更详细进程信息:
ps uaxf
如何查看进程的所有线程数?
ps -eL | grep IOT –c
性能分析工具有:
sar、iostat、vmstat
查看linux下命令的执行过程,使用strace命令:
删除软连接:strace rm: strace unlik:
删除硬链接:strace rm: strace unlik:
如何修改hostname:
1、vi /etc/sysconfig/network,修改HOSTNAME
2、vi /etc/hosts 修改:127.0.0.1 以及本机IP对应的hostname
上面两步执行之后重启机器才能生效
3、hostname newname 重新login就ok了
hostname命令是临时修改hostname,重启后会以上面两个配置文件的来设置
添加用户
groupadd dw
useradd -c "log user" -d /home/adli -G dw -p dw -s /bin/bash adli
useradd -c "analoyzer test log user" -d /home/logtest -G alilog -p logtest -s /bin/bash logtest
userdel adli
后台运行shell脚本中的命令:
nohup sh ./run_search_click.sh >/tmp/run_search_click.log 2>&1 &
[远程传输、控制类]
如何进行批量传输?
wget -t 10 -c -T 60 -i downloadfile.txt
远程copy:
scp admin@cx300-admin:/home/admin/alibaba_web_logs/otherlogs/offer_detail.log/OfferDetail.2010.08.23.* .
[压缩、解压类]
解压tar包:
tar -zxvf ybc.dmp.tar.gz
压缩tar包:
tar -zcvf ybcout.dmp.tar.gz ybcout.dmp