|
1)pgrep pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
. V+ r) I) u. ?* k" F- $ pgrep -u hchen( b) E+ Q! ^8 L
- 22441
6 w/ C9 j* G p( X$ D8 B - 22444
复制代码
& F2 y5 l$ `$ `/ U3 v这个命令相当于: - ps -ef | egrep '^hchen' | awk '{print $2}'
. A2 r# x7 D4 n; c1 O4 l
2)pstree 这个命令可以以树形的方式列出进程。如下所示:$ u% n" j' x& V1 {3 P: {
- $ V3 f5 E8 g0 B0 a
- [hchen@RHELSVR5 ~]$ pstree2 r, I9 `& w& Q9 {
- init-+-acpid4 A3 c' Y( @" w% B2 \# [! c
- |-auditd-+-python
6 M* e0 i! K M* ` - | `-{auditd}
6 K+ z& R/ o2 U3 v/ S. B - |-automount---4*[{automount}]
& g( Z8 J( z( n/ h+ Q% T - |-backup.sh---sleep2 `$ a3 C) x" o J
- |-dbus-daemon c' F! w- Q& |; E% r! N
- |-events/0+ \* P' A9 t3 L+ s
- |-events/1
0 P# i+ E7 C/ J - |-hald---hald-runner---hald-addon-acpi4 L6 M$ T4 L% U0 E/ q0 o
- |-httpd---10*[httpd]6 {. b+ W( z9 }% T6 F; y# |# \9 q" n
- |-irqbalance
' Y+ t4 I. s+ |8 s8 j4 T6 P4 G( x - |-khelper( t8 T2 U. w# r _" [9 G
- |-klogd
3 r. b) B Z1 x - |-ksoftirqd/0/ m& E9 f$ H e6 S3 V" e6 z
- |-ksoftirqd/10 `8 \( V7 B! K( L
- |-kthread-+-aio/0
0 x! z! `3 k* @! P& M& N - | |-aio/1
. K, X6 F5 B2 O* p- Y& M. b - | |-ata/0/ j( a* e+ S5 r( a' F2 V
- | |-ata/14 ]1 q, g* a% U# R
- | |-ata_aux4 g: n) h4 O+ f: s
- | |-cqueue/0
! X9 f, a7 ?' e6 K2 e. F4 U: } - | |-cqueue/11 d+ U% P, z5 c& r
- | |-kacpid
$ i( W: I7 D+ @, |6 w* l7 ` - | |-kauditd
/ V) Y" }. I" l - | |-kblockd/0) \) u+ T& f+ G
- | |-kblockd/18 ~/ Y' I8 m! g) r- A
- | |-kedac
$ U9 c6 k$ ]% e8 J/ q$ O$ f - | |-khubd. W! m! }1 i* _) d& h
- | |-6*[kjournald]
; @3 Z0 e ^! `. w& ^& X* k - | |-kmirrord
7 \# v H0 ~& q7 I& J6 m+ C: O - | |-kpsmoused) v' }, ]& m" S; L* }6 j
- | |-kseriod$ u+ ~& U% N9 t7 r# S
- | |-kswapd0
) J6 M% ]( b9 ^; M - | |-2*[pdflush]& n7 X0 V# B1 I' t( m/ E; I
- | |-scsi_eh_07 b2 J8 B% Q0 L4 n) ^! B% n
- | |-scsi_eh_1
- z" B# N/ P8 F4 o% K$ `7 ? - | |-xenbus0 D" t5 ]/ O1 ]# Z M- P& J& P; ^) Q
- | `-xenwatch
. B, ~+ U. `4 K' ^ ] - |-migration/0
# B- S! f: d% X9 o - |-migration/1" n0 j+ ^5 T! k1 w ^! O2 ?- F
- |-6*[mingetty]4 h* b9 t& L% K$ s$ n
- |-3*[multilog]1 C4 |( c/ ^$ ^ N9 f' l- U
- |-mysqld_safe---mysqld---9*[{mysqld}]
5 ^$ P8 S$ p8 o% W( } m: i - |-smartd! k% V/ t; |* C0 H% y
- |-sshd---sshd---sshd---bash---pstree4 K8 _, }' _; B+ W% p+ B
- |-svscanboot---svscan-+-3*[supervise---run]
% F* Y/ L& _" {6 C$ [! j1 u - | |-supervise---qmail-send-+-qmail-clean
. B7 R v6 n, j3 E# G7 t# H - | | |-qmail-lspawn
! e7 p- f! |+ b/ d. K - | | `-qmail-rspawn
6 U# J" a+ ?; B - | `-2*[supervise---tcpserver]# y9 p3 s- }4 }- P6 K `
- |-syslogd- B9 M. b5 y" i
- |-udevd
+ _' I2 h$ v9 s) M& Q; V - |-watchdog/0 w# [4 r9 L* ^
- |-watchdog/1
) Q6 ^3 Q/ [ u$ G. o3 F% h - `-xinetd
复制代码 $ g9 \. N* g8 \( x
3)bc 这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
* C* E+ [+ z* A9 w7 k
+ p& u, {3 q( L) Y- #!/bin/bash
; n- w R* v7 n0 E
* }) U) u: |! S2 Z# k& b/ p! i- if [ $
% x5 T/ p0 n5 z! \+ @ - then7 @: V+ p C0 R% C+ L# \* [, x6 {
- echo 'Usage: sqrt number'2 {& u2 r. R4 q; e
- exit 1! F! R- B9 J/ ]- Z* G0 B) A
- else/ h( M6 \. E! n+ a: s
- echo -e "sqrt($1)\nquit\n" | bc -q -i
9 d! C; J! E( E+ X3 b/ y - fi
复制代码
- Z$ h, o/ Z5 X3 D, Y2 g于是,我们可以这样使用这个脚本进行平方根运算:
8 l5 c4 D4 B1 J - , R& N k8 o4 B
- [hchen@RHELSVR5]$ ./sqrt 36
# G) y* N$ ?3 w2 e$ @; \) j - 6
5 F% G- k* ~; R4 |- R - [hchen@RHELSVR5]$ ./sqrt 2.0000
: _7 r4 _9 s: J4 z+ T: I - 1.4142
5 ], O. P, N, A9 v - [hchen@RHELSVR5]$ ./sqrt 10.0000
, w$ _/ K" ]8 }2 i - 3.1622
复制代码 % m* o" S4 h+ d" _+ n9 L
4)split 如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。 - 6 y6 w( T# V; X) f i7 \
- [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
1 s0 C) D+ C. s$ I$ m - -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz, v% ^4 k8 V. a6 M& Y: C5 m
- / V: U7 S+ u: |5 k2 B* C4 L9 O. @
- [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
0 L( e+ E5 L- k% }1 r$ t% i
4 H/ r" h+ M; I. } i/ _+ H- [hchen@RHELSVR5]# ls -l LF_*0 m+ x# C4 h9 Y8 J
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa% n" l# P: T3 I4 x) N/ X) f# t( ^
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
. B/ ]8 v4 O: A- y v+ n, s - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
. c# w, A2 ?4 d9 K0 j8 t* C - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
6 a; u1 N8 C+ k$ k - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
# R+ V, \ B2 u/ }0 F5 Q& M - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
7 C. D' Z7 b* G6 |* g - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
& S; }1 @( i, o. l' R5 v9 h' V/ b% F2 y6 T - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah+ ? f$ B/ a2 l! m
- -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码 5 i" [* n3 X( K% P" Y+ q d$ U; b! l
文件合并只需要使用简单的合并就行了,如: - [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
, X6 [1 Z7 `& }5 Q" o& F5 \
5)nl nl命令其它和cat命令很像,只不过它会打上行号。如下所示:
% V$ w/ d ]" [. E! u- [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
6 E0 m& x* [; W1 s! ]. `2 O - 1 /* Define ISO C stdio on top of C++ iostreams.% r0 v( @, s, t
- 2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.; Q3 c; K, J3 ~# e: F
- 3 This file is part of the GNU C Library.
# c) f, w+ C @7 k2 }) `% w
0 ~4 l/ z. C g; L- 4 The GNU C Library is free software; you can redistribute it and/or9 J, o$ ^) A. S7 d4 q
- 5 modify it under the terms of the GNU Lesser General Public- z; V' U% X+ m
- 6 License as published by the Free Software Foundation; either) z7 w. Q4 o, b+ S6 V+ J
- 7 version 2.1 of the License, or (at your option) any later version. T) i9 Z1 ?) w- _: m6 t! v
- ; H* c ]4 m( z) t' G
- 8 The GNU C Library is distributed in the hope that it will be useful,
复制代码 % M d/ ~1 |+ ?8 O
6)mkfifo 熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例: 下面是创建一个有名管道:
2 N8 c+ a# k: O+ T9 L5 _( G0 z- [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe$ Q/ L6 a% K( l3 w- z
- : ]6 b7 q% C' r: V3 ~$ K9 \, x
- [hchen@RHELSVR5 ~]# ls -l /tmp$ q, x. b$ N/ j% K5 n- V- V$ x
- prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipe
复制代码
- r% z% m6 o; p. q然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
2 m3 v$ K' r# @* Z$ q - [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
4 T' X5 Q1 `. p
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
v" a. l) S- G7 }: T/ h! [; U7 j - 5 h7 e {3 \* M8 U+ Q# I0 V s- A
- [hchen@RHELSVR5 ~]# head /tmp/hchenpipe
# [9 l/ r3 @% H% ?7 y& E - drwx------ 8 hchen hchen 4096 05-10 18:27 .
! G H6 R) J' i8 m+ ]9 l9 \ - drwxr-xr-x 7 root root 4096 03-05 00:06 ..8 S( g# S1 J; C! c! A. j
- drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup
% X2 p0 Q' }$ g9 e/ J/ L4 C - -rw------- 1 hchen hchen 721 05-05 22:12 .bash_history" c! H7 C2 m4 o7 a6 |& d8 @8 `
- -rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout
7 S: u! G% Z* f0 G: w/ C: D. \3 ^9 d - -rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile
3 k2 a8 l5 Q" j; ] - -rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc' c4 O( q1 z/ o1 ]( }
- -rw-r--r-- 1 root root 14002 03-07 00:29 index.htm
6 x- j) |) _ b! i - -rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.php
复制代码 . n% t# S# E( J T
7)ldd 这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
/ ?% e) f: p/ X. M; r; N2 T; r- [hchen@RHELSVR5 ~]# ldd /usr/bin/java
( \; |: m1 {5 E/ U" z I: O: f1 t - linux-gate.so.1 => (0x00cd9000)% x+ c6 c1 {6 R3 F5 F3 g. W
- libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
9 a' E( L/ I/ H& e% f1 H$ M - libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000) `7 [2 r& D7 R
- libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
4 q7 s$ }8 _" h+ O+ _/ s - librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
( x5 {5 v* L4 V" z3 C - libdl.so.2 => /lib/libdl.so.2 (0x008b5000)! T. k5 g. Z7 I: a7 `5 A- x2 Q0 c, F
- libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)! h# o# | C v+ m: l% n$ E) D9 E
- libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000); t7 N6 t+ s+ R% h& d
- libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
; N# Q5 z7 N8 A" I3 a. S0 u4 a - libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
3 t$ }* @" M8 |9 ?! E! ~( n6 }% o - /lib/ld-linux.so.2 (0x00214000)
复制代码
; t/ B( Q( i- \7 a0 p8)col 这个命令可以让你把man文件转成纯文本文件。如下示例:
! q0 D0 ~' h5 n+ Y; y- # PAGER=cat
# c$ [# T. B3 [' q+ t - # man less | col -b > less.txt
复制代码 # n. c" z/ T v9 T* e
9)xmlwf 这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:
6 k; S; T( _# M F' h0 k- [hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml; M5 X7 y/ X( [; N3 j, c) _
- % Total % Received % Xferd Average Speed Time Time Time Current# u4 X! P; x% S0 p
- Dload Upload Total Spent Left Speed
\2 F& Q, Y& ?2 R - 100 64882 0 64882 0 0 86455 0 --:--:-- --:--:-- --:--:-- 2073k$ q" x4 t+ m& k1 d$ ^, k
- [hchen@RHELSVR5 ~]# xmlwf cocre.xml( _# u0 [8 ^0 Q6 O8 H$ p
- [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
' K8 m9 ]& ]4 p) P4 p8 v, V - [hchen@RHELSVR5 ~]# xmlwf cocre.xml
: @0 T/ ]# j3 ] - cocre.xml:13:23: mismatched tag
复制代码 9 h) j. U) n% j0 M6 S- {
10)lsof 可以列出打开了的文件。 - 9 d8 S* L; K s3 C( ?9 t) \, _
- [root@RHELSVR5 ~]# lsof | grep TCP0 s" _& n- t! _ t0 L6 C% S6 U
- httpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN)
; D( V$ P, C, P9 Y# G6 |2 A - httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN)0 U: ] `% @" w2 o! S
- httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN)5 E1 h9 J1 u+ i' t
- httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN)4 R+ t4 L* U2 ]
- sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN)
( u+ a s& j- n8 | - tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN)
^% f7 B) |, ]+ @ - mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN)
2 y m& ]6 d; @ K/ X - sshd 10735 root 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)7 U$ O5 p' l. i$ P) X, [
- sshd 10767 hchen 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)8 l# a$ a- M$ q& t
- vsftpd 11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)
复制代码
& U1 |8 a& z( d( K9 E& Q |