单独查找文件内容grep
grep /usr/local/* -e who #who 是查找的内容
用 zcat 查看压缩的文件
单个磁盘的容量现在已经超过了 1TB,但是大型数据文件、日志文件、图像以及电影等媒体文件很快就把磁盘装满了。为了节省空间,可以把许多文件压缩到原大小的几分之一。例如,Apache 日志文件(是简单的文本)可以压缩到原大小的十分之一。
尽管压缩可以节省磁盘空间,但是也会增加工作量。例如,如果需要分析压缩的 Apache 日志文件,就必须解压它,处理数据,然后重新压缩它。如果有大量日志文件(如果保留分析趋势所需的记录,这种情况很常见),那么开销会非常大。
幸运的是,gzip 套件包含许多可以 “在原地” 处理压缩文件的实用程序。zcat、zgrep、zless、zdiff 等实用程序的作用分别与 cat、grep、less 和 diff 相同,但是它们操作压缩的文件。
zcat /home/downfile/test.tar.gz | grep -a 'key_name' # -a : grep认为这是二进制文件
用 pgrep 寻找进程
您可能无数次使用 ps aux | grep ... 寻找进程。这当然是有效的,但是有一种更高效的搜索进程的方法。请试试 pgrep。
例如,以下命令寻找 strike 的所有登录 shell(其中的 strike 是用户名):
$ pgrep -l -u strike zsh
10331 zsh
10966 zsh
pgrep 命令提供筛选选项,允许按用户名(上面给出的 -u)、进程组、组等筛选进程。配套的实用程序 pkill 接受 pgrep 的所有选项和一个信号,它把这个信号发送给与给定的条件匹配的所有进程。
例如,命令 pkill -9 -u strike zsh 与 pgrep -u strike zsh | xargs kill -9 等效。
ldd 命令路径 查看执行文件所依赖的库文件
strace 命令 查看执行文件具体系统执行流程
[root@CentOS5 ~]#pmap -d 9639
每列的含义如下:
参数 解释
Address:进程所占的地址空间
Kbytes:该虚拟段的大小
RSS:设备号(主设备:次设备)
Anon:设备的节点号,0表示没有节点与内存相对应
Locked:是否允许swapped
Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
Mapping:bash 对应的映像文件名
Resident :表示在内存中驻留的段的空间
shared :表示这些北分配的内存是被系统中其他进程共享的。
private :表示只能被该进程使用的空间大小。你可以发现share的空间不具有 private的属性。
Prstat -LP 的输出的意义是:
size:就是该进程占用的地址空间。
RSS:实际被分配的内存的大小。
你看到的resident和RSS不同,是RSS是进程在内存中的实际的大小,这个数值最大可以达到Resident显示数值。
比方说,用pgrep java得出pid后,用pmap $pid,得出输出结果如下:
23792:
/usr/java/jdk1.5.0_14/bin/java-Djava.util.logging.manager=com.caucho.log.LogManagerImpl-Djava.system.class.loader=com.caucho.loader.SystemClassLoader-Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl-Djava.awt.headless=true -Dresin.home=/usr/local/resin3.1.8-rtuku/-Xmx256m -Xss1m -Xdebug -Dcom.sun.management.jmxremote-Djava.util.logging.manager=com.caucho.log.LogManagerImpl-Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl-Djava.awt.headless=true -Dresin.
0028f000
72K r-x--
/lib/libnsl-2.3.4.so
002a1000
8K rwx--
/lib/libnsl-2.3.4.so
002a3000
8K rwx--
[anon ]
0031c000
84K r-x--
/lib/ld-2.3.4.so
00331000
4K r-x--
/lib/ld-2.3.4.so
00332000
4K rwx--
/lib/ld-2.3.4.so
0033a000
1172K r-x--
/lib/tls/libc-2.3.4.so
0045f000
4K r-x--
/lib/tls/libc-2.3.4.so
00460000
12K rwx--
/lib/tls/libc-2.3.4.so
00463000
8K rwx--
[anon ]
00467000
132K r-x--
/lib/tls/libm-2.3.4.so
……
b7f50000
4K rwx--
[anon ]
b7f51000
4K r-x--
[anon ]
b7f52000
4K r-x--
[anon ]
bfcf1000
12K -----
[ anon]
bfcf4000
1012K rwx--
[ stack ]
total
652340K
从中可以看出来加载的所有so和线程堆栈用掉的内存。
据称,当anon在512K-4M之间的超过上千个的时候,可能就是在多线程上有问题了。
还有一个用途,比较偏门的。
比如一个squid服务器,前人直接cd进目录,然后./squid启用的服务。那怎么去知道这个squid到底在那个目录里呢?(尤其是发现惯用的/usr/local下哗哗的摆着五个squid目录……)
现在只要pmap 一下,第一条就给出了全路径。哈哈~~