手动清理内存缓存
echo 1 > /proc/sys/vm/drop_caches
批量替换文件夹中多个文件中的字符串
sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa` 注意grep前面和最后面的引号为反引号就是tab键上面的引号
列出当前文件夹目录大小,以G,M,K显示。
du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf"%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"):$1>=2**10? ($1/2**10, "K"): ($1, "")}e'
查看linux系统最近重启时间命令
last reboot
linux下搜索文件中包含指定字符串的方法
例如我们想搜索当前目录下所有文件中包含字符串test 的方法如下
方法1: find . -name "*.*"|xargs grep "test"
方法2: grep -n "test" -r ./
fc-cache -fv 更新字体信息缓存
find -type f -size 0 -exec rm -rf {} /; 删除0字节文件
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 查看http的并发请求数及其TCP连接状态
取IP地址:ifconfig eth0|sed -n '2p'|awk '{print $2}'|cut -c 6-30
截取文件件指定行内容 例如截取a.txt中的2-6行
awk '{if(NR>=2&&NR<=6) print $0}' a.txt 或者用sed -n '2,6' a.txt
统计日志客户端ip总流量排序
#linux apache nginx
awk '{a[$1]=a[$1]+$10}END{for(i in a)print a/1024/1024"MB",i}' access.log|sort -nr >ip_tarffic.log
#cat a.lst
10.10.1.1 http://www.hao.com/1.html
10.10.1.2 http://www.hao.com/2.html
10.10.1.3 http://www.hao.com/3.html
10.10.1.4 http://www.hao.com/4.html
10.10.1.2 http://www.hao.com/1.html
10.10.1.1 http://www.hao.com/1.html
10.10.1.1 http://www.hao.com/2.html
10.10.1.2 http://www.hao.com/3.html
10.10.1.1 http://www.hao.com/1.html
10.10.1.3 http://www.hao.com/2.html
求教一 shell脚本或 perl脚本处理后生成如下报表:
url 独立ip pv
--------------------------------------------------------------------
http://www.hao.com/1.html 2 4
http://www.hao.com/2.html 3 3
http://www.hao.com/3.html 2 2
http://www.hao.com/4.html 1 1
总结:即通过url计算每个url的独立ip数和pv数,并可按pv数或者独立ip数量进行排序
清除僵死进程 ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
tcpdump 抓包 ,用来防止80端口被人攻击时可以分析数据# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
检查IP的重复数 并从小到大排序 注意 "-t/ +0" 中间是两个空格
# less pkts | awk {'printf $3"/n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"/n"'} | sort -n -t/ +0
利用iptables对应简单攻击
netstat -an | grep -v LISTEN | awk ‘{print $5}’ |grep -v 127.0.0.1|grep -v 本机ip|sed “s/::ffff://g”|awk ‘BEGIN { FS=”:” } { Num[$1]++ } END { for(i in Num) if(Num>8) { print i} }’ |grep ‘[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}’| xargs -i[] iptables -I INPUT -s [] -j DROP
打开文件数目 # lsof | wc -l
检查打开文件总数是否过多
统计var目录下文件以M为大小,以列表形式列出来。
find /var -type f | xargs ls -s | sort -rn | awk '{size=$1/1024; printf("%dMb %s/n", size,$2);}' | head
查找var目录下文件大于100M的文件,并统计文件的个数
find /var -size +100M -type f | tee file_list | wc -l
sed 's/foo/bar/g' filename # 标准替换命令 sed '/foo/ s/foo/bar/g' filename # 速度更快 sed '/foo/ s//bar/g' filename # 简写形式 日期命令 昨天 # date -d -1day +%Y%m%d 前天 # date -d -2day +%Y%m%d 上月 # date -d -1month +%Y%m%d 明天 # date -d 1day +%Y%m%d 后天 # date -d 2day +%Y%m%d 下月 # date -d 1month +%Y%m%d
编译当前目录下的所有.c文件:
for file in *.c; do echo $file ; gcc -o $(basename $file .c) $file ; sleep 2; done > compile 2>&1
最受欢迎的10个 Linux 单行命令
1 sudo !!
以 root 帐户执行上一条命令。
2 python -m SimpleHTTPServer
利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。
3 :w !sudo tee %
在 Vim 中无需权限保存编辑的文件。
4 cd -
更改到上一次访问的目录。
5 ^foo^bar
将上一条命令中的 foo 替换为 bar,并执行。
6 cp filename{,.bak}
快速备份或复制文件。
7 mtr google.com
traceroute + ping。
8 !whatever:p
搜索命令历史,但不执行。
9 ssh-copy-id user@host
将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
10 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
把 Linux 桌面录制为视频。
清空linux buffer cache
sync && echo 3 > /proc/sys/vm/drop_caches
.将当前目录文件名全部转换成小写
for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done
清除所有arp缓存
arp -n|awk '/^[1-9]/ {print "arp -d "$1}'|sh
绑定已知机器的arp地址
cat /proc/net/arp | awk '{print $1 " " $4}' |sort -t. -n +3 -4 > /etc/ethers
统计文件中所有单词出现的次数
方法一 tr " \011" "\012\012" < filename |tr -dc "[a-z][A-Z]\012" |sort |uniq -c|sort -nr
tr " \011" "\012\012" < filename 读入文件filename,并将空格和tab(\011)转换为回车(\012)
tr -dc "[a-z][A-Z]\012" 删除文件中非字母以及回车的其他字符(-c按条件取反,-d删除)
方法二 cat filename | xargs -n1 | tr A-Z a-z | sed -e 's/\.//g' -e 's/\,//g' -e 's///g' | sort | uniq -c | sort -nr
统计web日志中来源域名个数
cat web.log|awk '{split($11,domain,"/");print domain[3]}'|sort|uniq -c|sort -nr
linux date命令 时间戳与时间互换
$ date -d "2011-10-10" +%s
$ 1318176000
$ date -d "1970-01-01 UTC 1318176000 seconds"
$ 2011年 10月 10日 星期一 00:00:00 CST
显示字符的转义码命令 $ showkey -a 然后输入需要转义的字符即可显示八进制 十进制 十六进制 的转义码
使用 rsync 解决scp 无法续传
rsync
-avzP -e
ssh
*.tgz cikuu@www.host.com:
/home/user/
多服务器日志合并 sort -m -t " " -k 4 -o log_all log1 log2 log3 先按照时间排序再合并
提取一定时间范围的日志 awk '{split($4,a,":");if (a[1]>=18&&a[1]<19) print $0}' nginx.log 去18-19点之间的日志
多线程下载工具
lftp加了一个参数c之后据说可以断点续传,实际上,它是默认不断点续传的,然后在其配置文件
/etc/lftp.conf
添加这一行
set xfer:clobber on
lftp -c "pget -c -n 10 http://www.domain.com/test.tar.gz"
vim编辑器中的列编辑模式
vim file 打开文件后 按[ctrl]+v 进入可视化模式 按方向键选取多行,按d 键删除多列 ,按 I 键 进入列编辑输入插入内容,按esc两次即可
当前目录文件以每行一个文件形式输出方法(1) ls -1 (2)ls|tr -s "\t" "\r\n"
多字段排序:
Sort -t: +2n -3 +5n -6 //以:为分隔符,对第3字段以数字方式,第6字段以数字方式排序
说明: 指定第m个字段的方法是: +(m-1) -m 字段后跟n表示数字序
linux 快速格式化硬盘
在Linux系统中挂载SCSI盘阵,且分区大小超过2TB时,无法使用mk2fs命令进行格式化,而在使用mkfs.ext3命令格式化时,需要增加-T largefile参数,否则格式化过程将非常缓慢。(超过2TB分区软件可以使用parted,使用方法见知识库中《Redhat linux支持超过2TB分区的方法》文档,知识编号:28700) 例:#mkfs.ext3 -T largefile /dev/sdXX
显示所有用户的crontab任务
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done根据进程名显示进程号 #pidof java
Linux设置代理上网
在linux中的用户变量中有关于代理环境设置,如ftp_proxy、http_proxy、RSYNC_PROXY。 我举个例子吧!假如我们要通过以下代理服务器的http代理方式接入网络,设置如下: proxy.debian.org:8080 账号:debian 密码:123456 #export http_proxy=debian:123456@proxy.debian.org:8080