在Linux服务器中如何找出大文件
查找根目录下(系统中)大于50M的文件:
find / -type f -size +50000k -exec ls -lh {} ;
查找/var/log目录下大于100M的文件:
find /var/log -type f -size +100000k -exec ls -lh {} ; | awk '{ print $9 ": " $5 }'
Perl 技巧: 显示大文件
#依据文件大小从小到大显示当前目录下每个目录的占用的情况(注:星号和星号的长度) du -k | sort -n | perl -ne 'if ( /^(d+)s+(.*$)/){$l=log($1+.1);$m=int($l/log(1024)); printf ("%6.1ft%st%25s %sn",($1/(2**(10*$m))),(("K","M","G","T","P")[$m]),"*"x (1.5*$l),$2);}'
ls 命令:在目录中找出最大的文件{-S :sort by file size}
$ ls -lS
$ ls -lS | less
$ ls -lS | head +10
ls 命令:在目录中找出最小的文件{-r :reverse order while sorting}
$ ls -lSr
$ ls -lSr | less
$ ls -lSr | tail -10
如果你想要一个基于文件大小排序的文件列表,你可以使用下面的命令(它会以递减顺序排列文件):
# ls -l | grep ^- | sort -nr -k 5 | more
递归查询:
# ls -lR | grep ^- | sort -nr -k 5 | more
grep命令的一些常用选项
grep -l / -i / -v / -n / -c / -r #这应该是grep最常会用到的选项了,平时多用用多实践就会理解了
grep -E ‘219|216’ data.doc #使用扩展模式匹配
grep -n “48” data.doc #显示所有匹配48的行和行号(若为多文件匹配还会显示文件名)(-n选项显示匹配行对应的行号)
grep -c “48” data.doc #输出文档中含有48字符的行数
$ dmesg
$ vim /var/log/dmesg
curl ifconfig.me #这是个好东西!用于方便的从命令行上获取本机的外网IP
curl http://ipecho.net/plain #也是用于获取本机的外网IP
Vim中的 “Esc键” 可以用 “Ctrl – C” 进行功能性替代
记录并回放终端会话{script和scriptreplay命令}
这在使用终端制作教程时非常方便。
要开始记录你的终端会话,使用下面的命令:
$ script -t 2>timing.log -a output.session
接着输入:
$ ls
$ touch test
……
……
$ exit
这里,script命令取两个文件作为参数timing.log(它记录了每个命令执行的时间信息)和output.session(存储了命令的输出)。
现在,要回放记录的会话,使用下面所示的scriptplay命令:
$ scriptreplay timing.log output.session
注:timing.log和output.session可以被任何想要在自己的终端上重放会话的人使用。
怎样去掉文件中的 ^M
sed ‘%s/^M//g’
# ^M怎么输的,该是组合键ctrl+v加ctrl+m
# ^M是先组合键crtl+v,然后按回车就行了
# 同样功能键 ^[ 是先crtl+v,然后按Esc键
如何在vim中删除空行
删除空行 “:g/^$/d”
删除所有空白行(^是行的开始,s*是零个或者多个空白字符;$是行尾) :g/^s*$/d
Sed删除空行
sed ‘/^$/d’
sed /^[[:space:]]*$/d
sed /^s*$/d
Sed删除行首、行尾的空格
sed ‘s/^[[:space:]]*//g’
sed ‘s/[[:space:]]*$//g’
用tr命令
tr -s ‘n’
awk ‘{if($0!=””)print}’
awk ‘{if(length !=0) print $0}’
grep -v ^$ file #grep只将文件file中的非空行显示出来
grep . file #和上面的效果一样,但颜色和提示符相同
awk NF file
awk ‘!/^$/’ file
tr -s “n”
# locate ncrack #可以找到不少用户名和密码的字典,算是个福利吧!
# locate brute #好多好东西,我才知道nmap的script放在哪了
如何知道Medusa有哪些模块,从而在执行命令时使用-M来指定
locate medusa
medusa -d
shell脚本:一次读取文件的一行,并输出
写法一:
#!/bin/bash while read line do echo $line #这里可根据实际用途变化 done < urfile
写法二:
#!/bin/bash cat urfile | while read line do echo $line done
find . -size 0 -exec {} ; #删除当前文件夹下大小为0的文件
Vim_skills
:w !sudo tee % #保存对“只读文件”的修改
:e! #在Vim中重新编辑当前文件,忽略之前所有的修改
:r! Command #将命令 Command 的输出结果插入到当前行
:r filename #在光标所在处插入文件filename的内容
:%!xxd #以十六进制查看
:%!xxd -r #从十六进制返回
:n1,n2 w filename #将 n1 行到 n2 行之间的内容保存到文件 filename 中
以root用户运行Linux上的软件
作为一名root用户,为了让某些不能在root身份运行的软件运行(译注:典型的是Google chrome),你需要在软件的二进制文件中改变geteuid调用为getppid。
这个技术在某些操作系统中非常有用,比如BackTrack/Kali,这里的大多数安装工作都以root用户完成。
比如:为了以root用户运行Google Chrome,使用下面的命令:
# hexedit /opt/google/chome/chrome
接着按下 Ctrl+S 在16进制转储文件中搜寻geteuid字符串。用字符串getppid代替。按下 Ctrl+X 来保存并退出编辑器。
现在浏览器就可以以root用户运行了。
# google-chrome
—Mayank Bhanderi, [email protected]
Linux的Shell里面生成随机数的一些思路
1.使用时间相关的随机数
利用date命令生成输出unixtimestamp(%s)和当前时间的纳秒数据(%N,精确到亿分之一秒)
前者保证在不同秒数时的输出不重复,后者保证在同一秒内数字(微秒)不重复,所以两者组合一下就可以了
%s seconds since 1970-01-0# 00:00:00 UTC
%N nanoseconds (000000000..999999999)
# date +%s%N
这个方法不依赖系统:只要时间不停止,就一直可以得到不重复的为随机数。
2.系统shell内部变量 $RANDOM
这么没啥好说的,依赖shell。
3.通过Linux的随机设备获取,然后算校验和(计算校验和这个还真的是必不可少的,否则有乱码o(╯□╰)o)
# head -10 /dev/urandom | cksum
注意这里千万不要使用cat去获取,因为这个是一条没有尽头的路,获取1行和10行没有太大的区别,这个各自看着办吧!
4.通过Linux的内核的UUID获取
UUID的计算信息会加入硬件,时间,机器当前运行信息等,可以保证生成的都是全球唯一的,方法比较直接:
# cat /proc/sys/kernel/random/uuid
就可以 然后在算校验和转换为数字即可,但是依赖Linux内核。
如上4种思路,仅供参考。