|
1)pgrep pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
: c( {. a# a1 K/ f/ `' n& e$ |! a! d3 ?- $ pgrep -u hchen; f2 e% I/ T& D+ N
- 22441
' F1 _2 x/ V& Z( u* c1 c - 22444
复制代码
. m" j; ~/ N" l" t2 S/ J这个命令相当于: - ps -ef | egrep '^hchen' | awk '{print $2}'
5 A6 y8 X* _0 N* C
2)pstree 这个命令可以以树形的方式列出进程。如下所示:
* _' ~# ?4 O; O6 H X: l" o& O
: g4 {- {" O% o. w! s% Y( c% B- [hchen@RHELSVR5 ~]$ pstree8 d2 e1 E0 }. w( h% E2 D' {
- init-+-acpid) U% Z1 _5 Y+ M5 B' A. h" m2 d
- |-auditd-+-python( ^% j5 @* D5 I, a; K" R. m0 |; }4 e
- | `-{auditd}8 J% ]6 \* W2 R4 V
- |-automount---4*[{automount}]" w |0 {3 h) G; X+ L
- |-backup.sh---sleep* c( Y6 _: i0 N) A
- |-dbus-daemon
5 a# f. g g8 J. y" j; X - |-events/07 T9 i+ z& H$ A$ a6 W; W% R8 t
- |-events/1
$ F" J _$ L; S% P' X( I - |-hald---hald-runner---hald-addon-acpi
0 V6 f! a$ d- t6 H) N - |-httpd---10*[httpd], K) }9 e) [; t1 \3 }# L
- |-irqbalance
$ h5 g- m+ |! I- L& J - |-khelper
% n( q/ ?% N1 d0 {0 \ - |-klogd& d9 i5 x \& z4 d7 U$ g
- |-ksoftirqd/0
+ J2 T, X6 ~* V U" W9 J3 F - |-ksoftirqd/11 B- w3 g2 W. a, }: u
- |-kthread-+-aio/08 N4 A+ P/ H+ D4 w, Z: Z
- | |-aio/1$ j- ~3 b9 G+ d# S: @
- | |-ata/0
- T7 L: v0 L7 w5 D9 M - | |-ata/1
[& E/ v7 ]0 v: m) I - | |-ata_aux) }. `% W3 G6 [2 w
- | |-cqueue/0) \7 n( s" m ?" k
- | |-cqueue/14 d/ d: V" N1 e0 H" S/ h6 F
- | |-kacpid, b0 F- p2 @8 z- C& u, j. s
- | |-kauditd9 v' b9 i0 W* |- _
- | |-kblockd/0
# X& i2 `7 Q, n( f- J2 M+ h5 f- P - | |-kblockd/1
+ d) A% P( |. l8 k4 y - | |-kedac0 m6 A) t7 q0 O0 X% f
- | |-khubd2 U5 ^0 a7 A u+ S% s1 p4 f0 w
- | |-6*[kjournald]% k q# }& G/ h' ]$ \- O4 w. R
- | |-kmirrord
/ E7 M. ^0 e( J6 Z0 E - | |-kpsmoused
( H* m5 `5 _* w/ j5 \- [' \ - | |-kseriod( X- _7 r6 F! ?8 x+ S
- | |-kswapd0
& ^ a+ {% N/ {; s - | |-2*[pdflush]
+ I1 g* r* s0 ?! u$ j. M) c! I - | |-scsi_eh_0
4 ]" r' z5 Y: |! k; Z' o - | |-scsi_eh_1' B' N$ _. C7 Y) E6 {
- | |-xenbus) Z1 G2 Z! J' e- Y' B5 }, u' ]
- | `-xenwatch- }4 S, u) C" w
- |-migration/0' \! S9 H" ^; b) g1 |4 P$ i2 h2 S
- |-migration/1
) x& d5 p1 h* q% G! a- L - |-6*[mingetty]
2 d4 A$ a5 D: h - |-3*[multilog]
?3 J) }! j W0 A' `# N - |-mysqld_safe---mysqld---9*[{mysqld}]1 Y2 D6 I' `, l3 Q
- |-smartd
' H3 ~5 O+ v4 ?7 w3 Y+ \$ P - |-sshd---sshd---sshd---bash---pstree+ X4 u7 R2 N7 P# G# @
- |-svscanboot---svscan-+-3*[supervise---run]
# M+ H8 E# P1 T - | |-supervise---qmail-send-+-qmail-clean5 |+ F7 }0 e2 m
- | | |-qmail-lspawn
3 }% V, [ w; S - | | `-qmail-rspawn% s& K0 |0 T# Z1 g3 e
- | `-2*[supervise---tcpserver], n: M4 j) w3 h. j* v0 H
- |-syslogd
$ b3 W) v& w- h+ r h q - |-udevd5 P" o' U9 b g. y5 f
- |-watchdog/0
/ b# t: F4 X8 b6 b. S" N - |-watchdog/1
# F8 h- _7 I* Q R3 s; [) K) b - `-xinetd
复制代码
5 Q: q; z4 Y, G! A. H1 j7 A6 D* Q3)bc 这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
5 \/ d2 v: a$ V+ e6 [) |& _ - & M8 ~: P& Q* e$ B( `
- #!/bin/bash
/ j# I0 ~, T3 X; p+ r - 0 D8 i4 o: l; O, _4 D$ ^" O
- if [ $% D( I5 ^& ]$ G: q: C8 i+ M! ?0 e
- then
5 G7 f+ g0 N8 Y1 U0 D. X# V! L5 E* s - echo 'Usage: sqrt number'% U4 I+ Q1 v, ^) D! P( \% M
- exit 1$ C5 }+ j2 P. a7 `; U* v+ l
- else
" `* O |( m- K - echo -e "sqrt($1)\nquit\n" | bc -q -i' k/ g. x: b" U
- fi
复制代码 ( K7 c/ ]/ l2 T# ?6 ^7 C4 X6 i0 x+ y
于是,我们可以这样使用这个脚本进行平方根运算:
/ Y8 i9 e$ H+ H& V: ]( f0 E
& y8 V! Z" O8 }* v8 N$ V- [hchen@RHELSVR5]$ ./sqrt 36+ e6 ]$ x% K: R1 G
- 6
/ r9 k- E- S! |5 T- Z - [hchen@RHELSVR5]$ ./sqrt 2.0000
* o( ~1 _0 Z9 ^8 l4 \ - 1.4142
' u- P8 H" C* t W - [hchen@RHELSVR5]$ ./sqrt 10.0000
2 Z5 O0 p! U4 M- _3 e - 3.1622
复制代码
* i# q1 e: g4 v. i8 \! ^4)split 如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
* V* Y1 L. C' s* s- [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz$ i! w' |- N9 f# n; h ]0 J
- -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz( ]2 d/ O; ?3 o0 P$ y+ ^2 C) Q
- * ]; g+ p3 O1 A4 W& [
- [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
) D7 }, @: S, Q
- h1 D" e: }* Y+ W! H, r9 B2 @- [hchen@RHELSVR5]# ls -l LF_*% z; N+ W5 K3 E* B! b
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa) W& R# }& [$ u. V
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
+ a( V) p8 C t/ r7 x - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac- o! {+ d5 A; q; Q
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad2 [0 a( J9 N+ B/ ?
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
; S" q6 [0 U* u2 H - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af7 j& h4 C( I9 {; [0 l0 `$ B
- -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
# l/ l% k; @ o: g - -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah; i x2 p' I0 u; B
- -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码
2 ?+ j4 k, n; U8 z) Y6 |文件合并只需要使用简单的合并就行了,如: - [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz5 p2 `; T6 q6 M4 F8 R# E, E' T7 ^
5)nl nl命令其它和cat命令很像,只不过它会打上行号。如下所示:
9 N7 G8 Z: C; r, `( \- [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
! C; r5 Y2 S* P* R - 1 /* Define ISO C stdio on top of C++ iostreams.2 q: i& g' G( A' p
- 2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
+ t4 N0 I& t$ A' k' d) U - 3 This file is part of the GNU C Library.* ]3 y- S" i6 {5 X, ?$ U
1 r* u/ R; W! N- s' d* i9 o) F- 4 The GNU C Library is free software; you can redistribute it and/or) A1 T! o8 k# E) w5 D$ W5 J/ @
- 5 modify it under the terms of the GNU Lesser General Public
. \' A. t; O$ C; u1 @1 _: E - 6 License as published by the Free Software Foundation; either
# F+ m" ~6 R& s b! z - 7 version 2.1 of the License, or (at your option) any later version.) H$ V4 [ u( O( }" U, P0 m/ M
- ( `* u" M4 \; V. W
- 8 The GNU C Library is distributed in the hope that it will be useful,
复制代码 / D$ i7 U' Y1 ~- I* q5 a# c% x
6)mkfifo 熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例: 下面是创建一个有名管道:
( {# T- G6 K1 b4 B: I- [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
; W5 B9 Q$ @- s* \3 Q' r+ J
) S; u3 G( H1 ?7 p7 h- F- [hchen@RHELSVR5 ~]# ls -l /tmp7 L# q5 o1 H2 _8 d- [
- prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipe
复制代码
+ o! M8 \8 a$ b3 h: ~5 {然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
2 }2 }/ j* b. c - [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
; z8 k/ f! v) q
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回) K* [) G8 R4 \+ B, r4 O
- , R- E7 [0 S9 B6 C
- [hchen@RHELSVR5 ~]# head /tmp/hchenpipe# l6 K) y# ^+ N' c. D
- drwx------ 8 hchen hchen 4096 05-10 18:27 .$ @4 \$ Q1 ^4 _8 j
- drwxr-xr-x 7 root root 4096 03-05 00:06 ..
! J$ K3 X+ f8 g4 z - drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup
: K1 a |3 i! u( W# P: R/ t3 u9 F - -rw------- 1 hchen hchen 721 05-05 22:12 .bash_history. ?5 \" `7 y' Z' R* [1 o
- -rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout
" W, t# ?# O! H& @ - -rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile
& b; w, z+ ?1 A& n* i0 M4 Q - -rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc
m9 \5 O; W, T! [ - -rw-r--r-- 1 root root 14002 03-07 00:29 index.htm
! B) [6 b/ G* U' F) L - -rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.php
复制代码
0 A/ P _* H7 i' z3 @7)ldd 这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
2 H. [& n, S( x u- [hchen@RHELSVR5 ~]# ldd /usr/bin/java) q$ w7 _2 z" F1 K$ q# c
- linux-gate.so.1 => (0x00cd9000)
$ U: a' X9 |2 x - libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
' w9 g9 q- F$ R, n$ M+ `4 i% j - libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
" W l; d. S; m& m3 T0 |0 w - libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
% x" x( L/ K3 n: G5 e* q9 q - librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000) X1 J8 V* O# i* m1 @
- libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
# x: D4 w/ H8 k0 ~ - libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
4 t2 u) W4 Y$ a5 h# l - libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
; H' g% u" P; @. ~5 Z# l - libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
$ C+ a6 N/ B# ^9 Z% ^3 _# { - libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
2 k2 K4 V3 c2 w7 F# i# H4 V2 H! [ - /lib/ld-linux.so.2 (0x00214000)
复制代码 9 Y6 X' v u( ^, d
8)col 这个命令可以让你把man文件转成纯文本文件。如下示例: - 7 r) G2 ]7 }- {
- # PAGER=cat
/ w# p& N) q6 ]& a" m- s+ F" @ - # man less | col -b > less.txt
复制代码 # N* H# A; e, m6 k& V
9)xmlwf 这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:
f, X- R8 E( _; B2 e, O: Q) _' Q- [hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml
8 `0 \5 n9 R1 S' O# S+ W - % Total % Received % Xferd Average Speed Time Time Time Current* \( h, B" F1 C7 z8 R# q
- Dload Upload Total Spent Left Speed
' J# z1 k" _' x" P - 100 64882 0 64882 0 0 86455 0 --:--:-- --:--:-- --:--:-- 2073k8 k8 \: O0 q% N3 c4 p6 l
- [hchen@RHELSVR5 ~]# xmlwf cocre.xml
* W) W2 ?: {2 W - [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml5 t( N% R$ x f# n4 e; D8 E
- [hchen@RHELSVR5 ~]# xmlwf cocre.xml9 N! o3 L1 W3 @ l8 F" _4 N' ^
- cocre.xml:13:23: mismatched tag
复制代码 ( r/ k' o9 T$ |
10)lsof 可以列出打开了的文件。
" I, f% l' q0 r% m5 m! A6 G' Q- [root@RHELSVR5 ~]# lsof | grep TCP
) }0 O* Q1 Z2 A3 U* _1 c - httpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN)# Z0 I6 G* [0 m: g* h D
- httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN); W' z- L* V& p! S: |0 p
- httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN)
8 b0 E( Z# j5 e2 _$ X - httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN)' V2 z# F$ V7 N; q) T, V
- sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN)6 f; m ^6 m; A/ F, a% ^( q
- tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN)
0 X3 K3 c g! K9 u' O7 z* b - mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN)
7 n) e8 Y5 t' B+ {, o6 ^ S: g - sshd 10735 root 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
2 k' w9 Q! x' X* X& c4 L - sshd 10767 hchen 3u IPv6 160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
- [0 J+ w T+ |6 j - vsftpd 11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)
复制代码
- j6 N# h# b5 b8 r |