|
1)pgrep pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如: - 1 U/ j- t( A g" p$ d& Y5 Y
- $ pgrep -u hchen
: S3 ?5 w& m7 g5 i* L - 22441
4 U+ M, p6 j. R - 22444
复制代码
8 w* u9 y) U. X6 a3 }- z6 h$ ^这个命令相当于: - ps -ef | egrep '^hchen' | awk '{print $2}'& L X9 e* G ?, x. Q# J' e' X
2)pstree 这个命令可以以树形的方式列出进程。如下所示: - & E# N2 c3 |8 \" `$ A- }0 a* l- n% y
- [hchen@RHELSVR5 ~]$ pstree
; q& e* V7 m( }$ C/ O: C - init-+-acpid9 `- K; ^$ l" ^
- |-auditd-+-python* T5 D6 ]& a" G y0 [9 L3 s; Z4 R
- | `-{auditd}
& b* l9 g3 Q( O( M+ @/ Q - |-automount---4*[{automount}]
/ V! S" m8 {, X( X7 `! T1 X - |-backup.sh---sleep
5 ~. Q- V( ?$ Y! [! N$ ?0 k - |-dbus-daemon$ C& k1 o2 D. O7 a+ a J
- |-events/0! y1 r+ k, M! |+ z$ e- N% g# L) j! i9 Q
- |-events/1
1 n. O, n! b9 z. x% F: h - |-hald---hald-runner---hald-addon-acpi, d& P; |+ U* y2 r) z' z
- |-httpd---10*[httpd]
- B" G7 L& C4 v6 ?2 K7 V0 c& Z8 p6 m - |-irqbalance E: ^4 ]/ g& | U i
- |-khelper: @2 O- d, `. `0 D( k) [
- |-klogd
/ P W% u0 c8 ?! Y' @; J ` - |-ksoftirqd/0: }# Z4 a0 p1 P$ t
- |-ksoftirqd/1
. U, e% s8 G) _0 X# I" N' P6 | - |-kthread-+-aio/0$ L! `) L1 T5 {6 z
- | |-aio/1
0 F7 e! U% |7 @0 a& Y& |+ Z6 T - | |-ata/0
, u2 R, C. u) [ - | |-ata/1+ q, F8 Y/ V. m4 i4 S* n
- | |-ata_aux+ z# ~- _4 C3 R) A
- | |-cqueue/0
$ D* J" ^7 I3 k3 d - | |-cqueue/1
; M6 k4 T: r) V8 C* _0 G - | |-kacpid7 y8 n3 G% V) Z8 p
- | |-kauditd/ Z3 {+ v; g# m$ W" Z0 I
- | |-kblockd/0# J3 z! u7 x1 }8 X, }
- | |-kblockd/1
$ v( d- _, `+ o8 k - | |-kedac. W+ l: M3 E$ l) o, h$ j& `" M
- | |-khubd; i% g; U. C( E1 F' D
- | |-6*[kjournald]4 G$ \' U, H4 f' Z% R+ h4 |
- | |-kmirrord. a' o; ]; X) j' E! ?* G, J
- | |-kpsmoused; H5 d7 y, }& ~ _" n0 n
- | |-kseriod4 N o) J' U& V W0 P
- | |-kswapd0
. r* S6 a0 x( s; A/ O - | |-2*[pdflush]4 h* E4 c; Z5 q% F
- | |-scsi_eh_0 I) N3 r; o7 ?- O4 F7 x0 Z0 w. q2 P
- | |-scsi_eh_1
$ H4 E. U( x3 W0 L. t2 w# C6 U - | |-xenbus
& N' E# n9 L2 ^- Y9 R, U - | `-xenwatch$ J& E j9 M9 B+ W2 ?( U* P2 E+ a
- |-migration/0. _5 H9 ^4 c9 F) N, a3 w
- |-migration/1
' u, @* E7 T2 T - |-6*[mingetty]$ x' ~% P. y O3 _# N
- |-3*[multilog]
0 y% T9 u: P4 b+ R6 L) R) Q - |-mysqld_safe---mysqld---9*[{mysqld}]% R( X- T3 Z; O0 a F) j
- |-smartd, N1 a3 H+ i) b$ `5 [8 Q/ [7 @( l% |
- |-sshd---sshd---sshd---bash---pstree. K+ b( | v7 t U3 ^
- |-svscanboot---svscan-+-3*[supervise---run]
( f* c* F1 t8 K4 M; F - | |-supervise---qmail-send-+-qmail-clean* J% q6 A8 y- y3 H; }- Y: h
- | | |-qmail-lspawn
3 o1 B: b0 n) `& L& n% q; o. K2 m4 X - | | `-qmail-rspawn
0 e5 P) K3 ]3 G, I i" l* _ - | `-2*[supervise---tcpserver]2 m; h& e' `2 \5 m: a. P
- |-syslogd
$ N5 S5 g P6 T2 l: i8 P( G - |-udevd6 Q, W" ?1 X ~" x8 m; ^" |% _
- |-watchdog/05 ?! M7 q$ ^/ p$ x& o3 W7 U
- |-watchdog/19 Z3 q+ U0 |9 f
- `-xinetd
复制代码 9 _; P, q( e+ g; x6 i6 \$ \9 s
3)bc 这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
. y% \1 ?+ P3 O/ o+ u- #!/bin/bash7 t5 J3 d0 i3 E O+ B
5 F: b+ O2 q8 a* R4 o1 D- if [ $4 N+ p/ Z: ]& C- S+ W" t
- then
. I# F P% A) Y8 u+ ]5 D - echo 'Usage: sqrt number'2 D0 \8 C2 w; w0 m2 X
- exit 1
0 p0 N* t8 x7 g% Q1 [ - else
/ K& u. Q/ R5 F; V; [ - echo -e "sqrt($1)\nquit\n" | bc -q -i2 q! K3 v+ t# R8 u* Q
- fi
复制代码 ! P: Y# I- ?4 q
于是,我们可以这样使用这个脚本进行平方根运算: - ' `( T8 U0 K+ B! A7 @! n
- [hchen@RHELSVR5]$ ./sqrt 36
8 u+ ~; r8 K8 r! J' ` - 6
* X7 T* m$ {; S1 O: j - [hchen@RHELSVR5]$ ./sqrt 2.00007 k; e( |2 W) D+ Q3 `" K
- 1.4142
( ^+ m1 t, X% y" _( R0 b) F- s - [hchen@RHELSVR5]$ ./sqrt 10.0000
/ _( Q& e8 g! J3 Q - 3.1622
复制代码 2 q0 y) S0 q% \
4)split 如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
7 ^$ |) o7 D9 F) P6 E% i) R! g/ _- [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
1 [+ Q7 c- J- \7 U! Q - -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz5 d) R0 x1 }* l: [& e, f1 P
. r1 f/ A. c5 {+ v- [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_$ Z2 n1 F2 v9 \5 R9 U
* G8 V/ j l F( _/ l# q8 o- [hchen@RHELSVR5]# ls -l LF_*1 _8 D) a; e8 _# H4 X7 N
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa3 L# g Q/ M. Y
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab; }! S5 {: m! z; X# d
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
1 U5 p& k8 g( U. Y7 H4 }! Q |1 | - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
4 r! M W( o/ n' f1 S S6 R6 f8 |. } - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae! J# r r8 j( A: S) V3 y
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
4 l1 D {3 X0 s: t - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag* I* s3 T m G3 v; ?
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah" g) F8 A8 q9 {1 Y0 v
- -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码 ; E0 o* b& l( Q: L! w
文件合并只需要使用简单的合并就行了,如: - [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
; v9 v6 t2 e! s, q, p
5)nl nl命令其它和cat命令很像,只不过它会打上行号。如下所示:
4 t& a( F B3 J- [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
) b: W( e( D8 H - 1 /* Define ISO C stdio on top of C++ iostreams.) U/ ~, a: k; C, G( Y* r
- 2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
! V- y( z7 v1 i, i" u - 3 This file is part of the GNU C Library.
# D. S# ~& X# _" P, T- X( `1 n- ]
/ C# R/ h# Q$ b4 m- 4 The GNU C Library is free software; you can redistribute it and/or
" Z* I% [0 [$ J2 K' d3 G - 5 modify it under the terms of the GNU Lesser General Public" I9 H! t" R# r: E' W4 E
- 6 License as published by the Free Software Foundation; either
8 n* W8 ^5 l, D' M; w+ i% X0 N- o" k - 7 version 2.1 of the License, or (at your option) any later version. Z, j; l+ }/ u# e# N
/ E' P! L+ b* H0 t- 8 The GNU C Library is distributed in the hope that it will be useful,
复制代码
\4 u3 V; ~ C A6 T0 x6)mkfifo 熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例: 下面是创建一个有名管道: - * `7 H- s! P' G3 I ?+ `
- [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe0 N& e6 t# g+ Q! {
% I9 q: J$ N0 z- m( B; I- [hchen@RHELSVR5 ~]# ls -l /tmp
/ [. P1 l3 z9 K* J5 ^- a* n - prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipe
复制代码 0 q& I! [" e4 A9 ^- _
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。 - [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe6 `2 R' f2 A4 k1 R- |3 C2 D8 T& n
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回) - / K2 H1 x) L" @/ v% Q
- [hchen@RHELSVR5 ~]# head /tmp/hchenpipe9 l+ N; K- @0 V0 C6 h
- drwx------ 8 hchen hchen 4096 05-10 18:27 .* ^/ t8 Q; `6 [0 t1 |4 _4 g( A: j
- drwxr-xr-x 7 root root 4096 03-05 00:06 ..
& C4 E: ~& P& l2 r - drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup8 s/ e: X1 ~" k. h7 L8 S) C
- -rw------- 1 hchen hchen 721 05-05 22:12 .bash_history
; a! W1 k$ K) k/ }) `5 v - -rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout: N& I: B* s/ i4 g& `
- -rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile
/ j( a) \9 G {8 v: R - -rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc
* l) b) e+ O+ I - -rw-r--r-- 1 root root 14002 03-07 00:29 index.htm
8 p: ^; J7 D ~5 z% |: ? - -rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.php
复制代码
3 K s4 d. L( W7)ldd 这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
+ ~! a6 B0 E% @0 }+ U- c& G! y- [hchen@RHELSVR5 ~]# ldd /usr/bin/java
o1 ~( h( S3 J; K- ^7 | - linux-gate.so.1 => (0x00cd9000)) R% Y; M; K/ e! ]( B( L! Z6 ~
- libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
2 C' G) i0 e$ y; X2 X" }2 B - libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
6 ` n- @4 k$ U - libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000); H. y1 Y P! ]+ S
- librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)1 X& _8 N; {: g3 K2 c9 x, C
- libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
" [" } N* ~3 P/ W+ p% C - libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)% P( j' G5 O+ I/ T
- libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000) s' X8 g" a. E
- libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000). Y- p! q C5 @: x i7 p
- libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
, E4 I+ P5 F$ W - /lib/ld-linux.so.2 (0x00214000)
复制代码 4 ^3 ^$ l0 B i2 \' _
8)col 这个命令可以让你把man文件转成纯文本文件。如下示例:
, |8 m. K; ~8 G/ F! U$ P- # PAGER=cat6 A, s6 x k! M# T' A
- # man less | col -b > less.txt
复制代码 6 d, c! c @( x; k, k' t! @
9)xmlwf 这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如: - 8 x, ^7 ^7 ?: G/ p
- [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml
( H c- j; F! r. i( @ - % Total % Received % Xferd Average Speed Time Time Time Current
. ^6 R% G. D$ p& I. ]! v7 P - Dload Upload Total Spent Left Speed; q. J2 z( n1 E5 S$ B
- 100 64882 0 64882 0 0 86455 0 --:--:-- --:--:-- --:--:-- 2073k2 Y2 h) H& X) Y$ p! t
- [hchen@RHELSVR5 ~]# xmlwf cocre.xml
6 @5 q1 j2 b8 n - [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
! N5 ?: A) K/ L5 ` ` - [hchen@RHELSVR5 ~]# xmlwf cocre.xml
8 n8 H3 ]" B3 c+ ` - cocre.xml:13:23: mismatched tag
复制代码
% m* Z1 Z9 r9 M# f10)lsof 可以列出打开了的文件。
1 P4 D4 }& g( o$ M$ T, T7 ]: E- [root@RHELSVR5 ~]# lsof | grep TCP0 G/ K6 X; f+ I
- httpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN)# R' v$ |9 [7 A7 {" W
- httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN)1 Z- M0 O" d! q( \$ B f
- httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN)
% ]. w0 E$ Q p% H! g6 \ - httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN). t* @. `, m5 A
- sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN)2 O+ F% J- U/ ?2 r+ H
- tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN)4 h* m9 u) K1 b6 `/ B' k
- mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN)
( W- I8 E/ H: N' { - sshd 10735 root 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED). O2 `" o6 W" j8 b7 A
- sshd 10767 hchen 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
/ w1 Q1 q2 P) u" j# z" k - vsftpd 11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)
复制代码 . H9 z+ h1 U' c0 J+ D# `& y
, K% ]( t( _; e4 S% a |