find
1
2
3
4
5
6
7
8
|
find . -size +100M -exec du -sh {} \; #查找当前目录下大于100M的文件
find . -maxdepth 2 -name 201507* -exec rm -rf {} \; #清理备份命令
find / -type f -name "test.txt" | xargs rm -f #查找并删除
find / -type f -name "test.txt" -exec rm -rf {} \; #查找并删除
find / -type f -name "*.log" -mtime +5|xargs rm -f #删除五天前的log文件 -type d 查找文件夹 -type f 查找文件
find / -type f -name 'test.txt' | xargs sed -i s#test#newtest#g 查找内容并替换
find / -type f -name '*.txt' | xargs cat 批量查看
find /mds -xdev -printf '%h\n' |sort|uniq -c|sort -k 1 -n # 查看Linux目录的inode数量
|
ls
1
|
ls -l --time-style=long-iso # 显示成年月日格式
|
cut
1
2
3
4
5
6
7
|
-d :后面跟分隔字符,分隔字符要用单引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块
cut -d ':' -f 2 /etc/passwd
cut -d ':' -f 1-3 /etc/passwd
cut -d ':' -f 1,3 /etc/passwd
cut -c 2-5 /etc/passwd
|
sort
1
2
3
4
5
6
7
8
9
|
-t 分隔符 :作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
sort -t ':' -k3 /etc/passwd
sort -t ':' -k3 -n /etc/passwd |cut -d ':' -f 3
cut -d ':' -f 3 /etc/passwd | sort -n 常用
cut -d ':' -f 3 1.txt | sort -nr|uniq -c
|
awk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
以冒号为分隔符取出IP
ifconfig eth0 | awk -F: '/inet addr/ {print $2}'| awk '{print $1}'
以一个或者多个空格和单个冒号作为分隔符取出ip
ifconfig eth0 | grep 'inet addr'|awk -F ' +|:' '{print $4}'
以一个或者多个空格和一个或者多个空格冒号作为分隔符取出ip
ifconfig eth0 | grep 'inet addr'|awk -F '[ :]+' '{print $4}'
过滤出404URL
cat access.log |awk '$9~/404/'
过滤出IP和url
grep -Ev '(HTTP|GET)' access.log|awk '{print $1,$7}' access.log|sort | uniq -c |sort -n -k 1 -r
|
压缩解压
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
tar打包当前目录到tarname.tar
tar cvf tarname.tar ./*.* #tar zcvf tarname.tar.gz ./*.*
tar解压到当前目录
tar xvf tarname.tar #tar zxvf tarname.tar
zip压缩
zip -r data.zip data
zip解压
unzip data.zip -d databak
rar解压
rar -x data.rar
|
nslookup
1
2
3
4
|
cmd-->nslookup -qt=mx mulinux.com #查看域名mx记录
cmd-->nslookup-->set q=mx-->mulinux.com #查看域名的mx记录
cmd-->nslookup-->set q=any-->mulinux.com #查看mulinux.com的解析服务情况
nslookup -qa=ptr (ip) #检测反向解析
|
tracert
1
2
|
windows:tracert -d mulinux.com
linux:traceroute -d www.baidu.com
|
DD
整盘数据备份与恢复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
备份:
dd if=/dev/hdx of=/dev/hdy
将本地的/dev/hdx整盘备份到/dev/hdy
dd if=/dev/hdx of=/path/to/image
将/dev/hdx全盘数据备份到指定路径的image文件
dd if=/dev/hdx | gzip >/path/to/image.gz
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径
恢复:
dd if=/path/to/image of=/dev/hdx
将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/hdx
将压缩的备份文件恢复到指定盘
|
利用netcat远程备份
1
2
3
4
5
6
7
8
9
|
dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
在源主机上执行此命令备份/dev/hda
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
以上两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当前目录。
|
备份MBR
1
2
3
4
5
6
7
|
备份:
dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件
恢复:
dd if=/path/to/image of=/dev/hdx
将备份的MBR信息写到磁盘开始部分
|
备份软盘
1
2
|
dd if=/dev/fd0 of=disk.img count=1 bs=1440k
将软驱数据备份到当前目录的disk.img文件
|
拷贝内存资料到硬盘
1
2
|
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
|
从光盘拷贝iso镜像
1
2
|
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
|
增加Swap分区文件大小
1
2
3
4
5
6
7
8
9
10
11
|
dd if=/dev/zero of=/swapfile bs=1024 count=262144
创建一个足够大的文件(此处为256M)
mkswap /swapfile
把这个文件变成swap文件
swapon /swapfile
启用这个swap文件
/swapfile swap swap defaults 0 0
在每次开机的时候自动加载swap文件,需要在 /etc/fstab文件中增加一行
|
销毁磁盘数据
1
2
|
dd if=/dev/urandom of=/dev/hda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。
|
得到最恰当的block size
1
2
3
4
5
|
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小
|
测试硬盘读写速度
1
2
3
|
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度
|
修复硬盘
1
2
|
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。
|
测试硬盘读写
1
2
3
4
5
6
7
|
dd if=/dev/zero of=test.dbf bs=8k count=200000 conv=fdatasync
参考文档:http://elf8848.iteye.com/blog/2089055
测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件。
测试指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync
|
正确的使用dd进行磁盘读写速度测试
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的顺序读写能力。可以写文件,可以写裸设备。
dd语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
功能说明:读取,转换并输出数据。
语法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
参数:
bs=<字节数> 将ibs( 输入)与obs(输出)设成指定的字节数。
cbs=<字节数> 转换时,每次只转换指定的字节数。
conv=<关键字> 指定文件转换的方式。
count=<区块数> 仅读取指定的区块数。
ibs=<字节数> 每次读取的字节数。
if=<文件> 从文件读取。
obs=<字节数> 每次输出的字节数。
of=<文件> 输出到文件。
seek=<区块数> 一开始输出时,跳过指定的区块数。
skip=<区块数> 一开始读取时,跳过指定的区块数。
--help 帮助。
--version 显示版本信息。
|
dd常用参数详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
if=xxx 从xxx读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO)
of=xxx 向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件. 所有写入它的内容都会永远丢失. (不产生写磁盘IO)
bs=8k 每次读或写的大小,即一个块的大小。
count=xxx 读写块的总数量。
避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasync
---------------------------------------------------------
关于sync、fsync、fdatasync请参考:http://elf8848.iteye.com/blog/2088986
dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
dd bs=8k count=4k if=/dev/zero of=test.log 默认“写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=sync “写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log; sync “写缓存”启作用
dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fsync表示把文件的“数据”和“metadata”都写入磁盘(metadata包括size、访问时间st_atime & st_mtime等等),因为文件的数据和metadata通常存在硬盘的不同地方,因此fsync至少需要两次IO写操作,fsync 与fdatasync相差不大。(重要,最有参考价值)
dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fdatasync表示只把文件的“数据”写入磁盘,fsync 与fdatasync相差不大。(重要,最有参考价值)
dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync
加入这个参数后,每次读取8k后就要先把这8k写入磁盘,然后再读取下面一个8k,一共重复4K次。这是最慢的一种方式了。
dd bs=8k count=4k if=/dev/zero of=test
没加关于操作系统“写缓存”的参数,默认“写缓存”启作用。dd先把数据写的操作系统“写缓存”,就完成了写操作。通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数,把“写缓存”中的数据刷入磁盘。因为“写缓存”起作用,你会测试出一个超级快的性能。
如:163840000 bytes (164 MB) copied, 0.742906 seconds, 221 MB/s
dd bs=8k count=4k if=/dev/zero of=test conv=sync
conv=sync参数明确“写缓存”启作用,默认值就是conv=sync
dd bs=8k count=4k if=/dev/zero of=test; sync
与第1个完全一样,分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。
|
裸设备测试
1
2
3
4
5
6
7
8
|
1、裸设备到文件系统
dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841
2、文件系统到裸设备
dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8
更多关于裸设备,请参考:http://czmmiao.iteye.com/blog/1748748
|
lsof
1
2
|
lsof | grep deleted 查找被删除的文件
|
日志分析示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
1、查看80端口的tcp连接
#netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
2、当前WEB服务器中联接次数最多的ip地址:
#netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r
3、查看日志中访问次数最多的前10个IP
#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
4、查看日志中出现100次以上的IP
#cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less
5、查看最近访问量最高的文件
#cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
6、查看最近访问量最高的页面(.png)
#cat access_log |awk '{print $7}'|grep '.png'|sort|uniq -c|sort -nr |head -n 10
7、查看日志中访问超过100次的页面
#cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
8、access_log昨天一天的点击量(clicks);
cat access_log|grep '12/Nov/2009'|grep "******.jsp"|wc|awk '{print $1}'|uniq
9、昨天访问网站的独立IP有多少;
cat access_log|grep '12/Aug/2009'|grep "******"|wc|awk '{print $1}'|uniq
10、统计某url,一天的访问次数
#cat access_log|grep '12/Aug/2009'|grep '/images/index/e1.gif'|wc|awk '{print $1}'
11、拉出前五天的访问次数最多的网页前20名清单;进行五天日志对比,找出排名靠前重复的网页,即可得出本周访问量最大的前几个网页;
#cat access_log|awk '{print $7}'|uniq -c |sort -n -r|head -20
12、从日志里查看该ip在干嘛:
#cat access_log | grep 218.66.36.119| awk '{print $1"/t"$7}' | sort | uniq -c | sort -nr | less
13、列出传输时间超过 30 秒的文件
#cat access_log|awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
14、列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
#cat access_log |awk ‘($NF > 60 && $7~//.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
|