1)pgrep pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
/ ]. S2 }% y/ [4 H/ {/ ]; M- $ pgrep -u hchen
2 @0 }* r+ C8 v1 C+ U - 22441
* ~6 C. G+ e+ N$ R - 22444
复制代码 3 ~* ?+ A: X5 ~% ?! _8 \
这个命令相当于: - ps -ef | egrep '^hchen' | awk '{print $2}'
- q4 L4 ^7 [$ J" n1 l
2)pstree 这个命令可以以树形的方式列出进程。如下所示: - 2 f! t- M% e5 |" @& u
- [hchen@RHELSVR5 ~]$ pstree1 G% Z7 K. G% l- H
- init-+-acpid
, P: k" G& X9 Z$ ~! s* U. z - |-auditd-+-python) d6 n: W0 M. t g, y2 o Q. C
- | `-{auditd}
0 m0 b+ T4 j; D) K R. y: D6 @ X" H - |-automount---4*[{automount}]
2 Y! P$ w' o* ^3 ~* n - |-backup.sh---sleep0 u9 P4 O$ k8 y/ C
- |-dbus-daemon
4 q) q- r5 u& a" F% G - |-events/0
1 j* j: z6 D8 {$ K - |-events/1
, k, t3 p' _; z* X. E( k$ K- w$ R' k - |-hald---hald-runner---hald-addon-acpi
; d# ?: T' b- ]0 f0 Y - |-httpd---10*[httpd]' y# W- s& N" k9 J9 ?
- |-irqbalance/ M, L7 e7 V* n' v( }/ ^8 J
- |-khelper% \! x% \# {! a* x& A
- |-klogd3 x- W% A4 J% c+ {7 L9 f
- |-ksoftirqd/0( y) |5 B b1 h% y& V
- |-ksoftirqd/1 n9 I$ H( L' P$ S H
- |-kthread-+-aio/0
4 X& L$ M. n5 ^ - | |-aio/1& s4 e6 Y2 X7 K" Q ]
- | |-ata/0+ u- p# g6 x+ O; U. G- ]# U
- | |-ata/1' ` v0 w( O5 c! U4 Q8 G( c
- | |-ata_aux' E' ]/ k" _% I7 T' v
- | |-cqueue/09 C" ~) h3 x% k' ~3 Q. r* m' E
- | |-cqueue/1' k' C/ a2 G R9 e; Q' g* v
- | |-kacpid' N1 s( t1 z6 m( `
- | |-kauditd- I+ D( W0 i0 i, e( W# H
- | |-kblockd/0
/ m9 z8 B9 e+ q% ^ - | |-kblockd/1+ e }% ~" l# Q2 c; n6 Z6 D
- | |-kedac. a% M7 R; ?+ R. G- F9 D7 V" D
- | |-khubd
9 k, Z& D, ~9 N7 y - | |-6*[kjournald]
3 `4 N3 b2 z9 h( j+ Q/ V5 A - | |-kmirrord4 P, d0 O# x% |, O% r
- | |-kpsmoused6 K7 j6 L2 ^; t1 |( R
- | |-kseriod1 |% ?0 c7 _9 a) `; X
- | |-kswapd0' U+ X0 @7 }. t, I; \" k
- | |-2*[pdflush]. s8 J7 a; K5 ^, T! K
- | |-scsi_eh_0% v3 F3 U9 P- t6 ~/ y3 r7 ~4 S
- | |-scsi_eh_1/ N) M# ?4 \8 G F
- | |-xenbus6 z) ~0 [1 B0 J: e I- e, P
- | `-xenwatch& v6 q3 B1 p/ y2 f( E0 e$ f
- |-migration/0( M# G Y1 Y1 P3 a) j
- |-migration/1
* p# M- X! `; R - |-6*[mingetty]
. w6 z: b! t# M6 j& u6 n - |-3*[multilog]
3 E& @7 P( h B2 X' `( r. a - |-mysqld_safe---mysqld---9*[{mysqld}]
/ f' t) W5 S3 h$ a$ E - |-smartd6 D- X) ]6 E# i) C" g' C$ K' }
- |-sshd---sshd---sshd---bash---pstree/ W8 o. [; r; u5 R8 z& s: n
- |-svscanboot---svscan-+-3*[supervise---run]; {' j. _: Z& ?4 [" W( A+ T4 P
- | |-supervise---qmail-send-+-qmail-clean5 w( [4 W, s8 s, d* T* q& _0 W! l
- | | |-qmail-lspawn b( u/ w: M. I) s# n! ?
- | | `-qmail-rspawn, p% d( O6 T3 @9 B: V
- | `-2*[supervise---tcpserver]1 `4 U- a; [% x2 {2 s0 H, _
- |-syslogd( n% W2 F8 G* m4 F
- |-udevd& T7 |( U+ Y2 Q% ?
- |-watchdog/0
+ ]# N! }0 p9 F7 ~) [/ H8 T - |-watchdog/1& b. I( i* m5 s& T4 E
- `-xinetd
复制代码
/ L' W, t, `$ W8 t, I3)bc 这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt) - 5 ?1 l) Z0 F' R- D6 U* i- k
- #!/bin/bash
8 D) v4 ^ G! y0 W6 V- o
+ q, O9 B& P) g3 h8 J$ ~- if [ $
- }9 F& h! w" u: M+ L3 \3 u - then
& [/ G& E/ H# e1 |8 s. [ - echo 'Usage: sqrt number'* { o4 ^+ _8 y9 U w* Q+ B
- exit 1 ?8 }7 D0 d2 m0 d" M7 M/ O
- else
. \3 U, V# i& |6 o+ q0 p - echo -e "sqrt($1)\nquit\n" | bc -q -i* Z) d3 U% t D7 U& P3 _
- fi
复制代码 # l" L. S Q' c ]: A
于是,我们可以这样使用这个脚本进行平方根运算: - % \: u$ d/ ]9 \
- [hchen@RHELSVR5]$ ./sqrt 36
) ]) B6 U6 |/ [' m - 6" k# n$ u0 |3 `* x' e
- [hchen@RHELSVR5]$ ./sqrt 2.0000
1 C8 ]; ], b+ d* c' C; K6 Q* r - 1.4142' y, E) m' v( o O2 v
- [hchen@RHELSVR5]$ ./sqrt 10.00007 s3 ]0 n) O* U" l: e2 f
- 3.1622
复制代码 ) R* [4 \' C {6 L
4)split 如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。 - 9 V" X! I# z$ P+ o$ ^
- [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz5 w/ U7 L5 s; Z; F4 h
- -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz3 n3 v2 C g1 k: \
9 v. R( E* R) `' I2 } J: A- [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_2 B; v9 ^) Z3 ^) J- \
) J5 R+ p/ O" `+ d7 r9 X- [hchen@RHELSVR5]# ls -l LF_*. I- H/ P0 a. N% G3 T, Y
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa- X2 l: G9 K( I5 r- i0 x9 {
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
) h4 c0 F% y$ w+ p" V: K: O - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
4 @; }# g5 Y: A2 K4 i { - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
1 @5 r3 N. u, i+ s' y/ ~ - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
8 W' O) a- `" h, W6 ?) f - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
$ @) R% r$ p3 E8 t+ d - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag: S/ v9 S! h. d- F0 {; r6 N
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah$ G& W: c" t; q1 u1 F) |/ P
- -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码
' a( U8 }2 b# p, c% ^- T& d文件合并只需要使用简单的合并就行了,如: - [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
/ b9 ~) l3 T. E/ s W+ v& J
5)nl nl命令其它和cat命令很像,只不过它会打上行号。如下所示:
/ a: Z# ~% _) n- m/ j& d- [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
$ z3 _! B6 B" ~1 ^" Q% k - 1 /* Define ISO C stdio on top of C++ iostreams.
% m7 g6 ~. ^1 D+ ~# q - 2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.0 |5 c1 I- I5 R/ u$ Z* h" Y& d
- 3 This file is part of the GNU C Library.
: i! J& `( s4 j/ V0 p1 d, D) `" B - & H3 ? x3 Y5 B( x; M# E& }
- 4 The GNU C Library is free software; you can redistribute it and/or, r/ H" {* T. ]6 S% H2 O5 l$ q
- 5 modify it under the terms of the GNU Lesser General Public
7 p. }( N& S% z0 @ [ - 6 License as published by the Free Software Foundation; either
) b/ Q- Q2 y3 Z - 7 version 2.1 of the License, or (at your option) any later version./ j) I9 B) g/ s& N, K" r# B) ?
- + y; l5 \* e/ h+ n* S9 t
- 8 The GNU C Library is distributed in the hope that it will be useful,
复制代码 ( V- k3 P* r; e3 A& B9 ^1 g& B1 C3 T
6)mkfifo 熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例: 下面是创建一个有名管道:
) g& ~0 a* r- r4 e- [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
7 B7 A4 l" j- R0 a) b1 S8 r
* F7 _4 ]( r/ E3 |- [hchen@RHELSVR5 ~]# ls -l /tmp
1 X% o3 j3 a0 d ?2 X9 f0 S - prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipe
复制代码 * y$ j1 z' d% X! o
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。 - [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
/ A3 J1 i( J4 N
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回) - ' `, P8 U: ^! T% n
- [hchen@RHELSVR5 ~]# head /tmp/hchenpipe0 O/ i+ M' O: u# f( }# i3 A! y
- drwx------ 8 hchen hchen 4096 05-10 18:27 .
5 H: i H) x4 w& \6 ]5 F - drwxr-xr-x 7 root root 4096 03-05 00:06 ..
; B5 n" O- ~3 ? j0 Z2 Z+ B - drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup. a, [" q+ x5 e8 V' a$ r" ]1 _
- -rw------- 1 hchen hchen 721 05-05 22:12 .bash_history
$ f- Y0 G+ a; B) C" C# a0 t - -rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout1 g$ O' [ ]8 J* T& {
- -rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile$ `& B. V/ Z. M6 p! O7 ^3 ^+ Z
- -rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc
8 ^ s# K" P/ K/ l$ _$ O& o+ V# I2 A - -rw-r--r-- 1 root root 14002 03-07 00:29 index.htm
2 n( S% k8 D! J0 o: m8 Z1 O1 \- M - -rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.php
复制代码 / v& z p/ J8 _2 s
7)ldd 这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
, T6 V4 l( {! @- M* T- [hchen@RHELSVR5 ~]# ldd /usr/bin/java
. @# r! ]( e3 r2 B/ s. t# S - linux-gate.so.1 => (0x00cd9000)" }4 K: W. c4 k* q
- libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
: [) z* q2 A' b' i5 w* a - libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
8 t+ }2 V9 \- x6 l5 }; G - libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)% g; ^& D1 ?6 _- A
- librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
$ t/ N+ S/ E0 G/ [ - libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
% \! j# e7 g8 ] - libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
; L5 b& x$ H* H6 ~" u- o4 C0 l& T - libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
8 G B3 D+ R+ |. c0 w - libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)( |: s2 ~9 h) |6 k
- libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
8 b# i4 q9 l L8 o6 l - /lib/ld-linux.so.2 (0x00214000)
复制代码
% m* V# v# ~+ B$ [% `# {" K8)col 这个命令可以让你把man文件转成纯文本文件。如下示例: - - t: r; O% q& `$ T% d
- # PAGER=cat
/ T9 v& n3 Y5 s9 B - # man less | col -b > less.txt
复制代码 1 |# J, F, j7 [
9)xmlwf 这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:
0 E: U/ t8 b' `- [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml% e- Z% V) Z+ ]- Z6 M7 w( S
- % Total % Received % Xferd Average Speed Time Time Time Current& a \7 l+ T% w6 d# F
- Dload Upload Total Spent Left Speed
" O, h1 F& s& R- h5 j1 n- l - 100 64882 0 64882 0 0 86455 0 --:--:-- --:--:-- --:--:-- 2073k( ~+ k* e& c6 z- P' P
- [hchen@RHELSVR5 ~]# xmlwf cocre.xml
5 Z( x4 Y6 u' L1 `; v3 G - [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
- {) T7 v3 N7 _8 Y `9 l - [hchen@RHELSVR5 ~]# xmlwf cocre.xml% N8 K0 Z6 S7 i
- cocre.xml:13:23: mismatched tag
复制代码
' y3 A- l' _; k% Z) r10)lsof 可以列出打开了的文件。 - ! K8 T5 q7 o# Z4 q2 W
- [root@RHELSVR5 ~]# lsof | grep TCP- o" c# D* v0 K0 B5 O. M
- httpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN)$ d+ r/ |# ?0 T: A) A
- httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN)
$ v6 _$ Y( n# V - httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN)
( \: h* @4 d& ^5 j0 ?1 x2 F - httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN)
- O9 N# Y' M) n5 C1 e5 s4 D$ z - sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN)
5 P" f1 H/ y+ t2 ?6 |9 Y* x, W; Z - tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN)
+ r- K7 t W$ q7 @- G0 w. w) g: n - mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN)
. ~8 b l! |! t - sshd 10735 root 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)+ b! Y8 @6 k2 D; [% M; K1 S' f5 G
- sshd 10767 hchen 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
8 u: w) L" w" z! t - vsftpd 11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)
复制代码 ' ~7 s. F- l) o+ Z8 _) ?8 S( d' x
1 @1 ^4 U* Q3 a% K
|
; J% W6 p' F3 \) W