一些“簡單”的linux命令

dbhelper發表於2014-11-26

有些linux命令看起來極其簡單,只包含2個字元,但是確有很強的功能性。看起來還是有些陌生的命令,在工作中別忘記它們的存在。

ab


這條命令式做為效能測試所廣泛用到的一下子就有了一種高大上的感覺,來一個例子,對百度的某一個網頁執行併發100,時長5秒,傳送10000次請求的測試
[ora11g@rac1 ~]$ ab -n 10000 -c 100 -t 5 http://image.baidu.com/channel/game
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
Licensed to The Apache Software Foundation,
Benchmarking image.baidu.com (be patient)
Finished 31 requests
Server Software: Apache
Server Hostname: image.baidu.com
Server Port: 80
Document Path: /channel/game
Document Length: 53002 bytes
Concurrency Level: 100
Time taken for tests: 5.032 seconds
Complete requests: 31
Failed requests: 0
Write errors: 0
Total transferred: 3889626 bytes
HTML transferred: 3843863 bytes
Requests per second: 6.16 [#/sec] (mean)
Time per request: 16231.568 [ms] (mean)
Time per request: 162.316 [ms] (mean, across all concurrent requests)
Transfer rate: 754.89 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 17 48 63.6 40 384
Processing: 1605 3580 880.3 3815 4970
Waiting: 128 651 652.4 328 2129
Total: 1623 3629 872.0 3864 5019
Percentage of the requests served within a certain time (ms)
50% 3859
66% 4125
75% 4364
80% 4369
90% 4409
95% 4951
98% 5019
99% 5019
100% 5019 (longest request)

 

ac

[ora11g@rac1 ~]$ ac
total 3738.65
將顯示每個使用者的總的連線時間:
[ora11g@rac1 ~]$ ac -p
dbtgr 57.75
ora10g 0.01
ora11g 48.28
ogg 22.08
jeanron 907.77
root 2.83
grid 2699.92
total 3738.66
grid 35.64
May 20 total 35.64
grid 78.35
May 21 total 78.35
grid 6.34
May 22 total 6.34
grid 19.00
May 23 total 19.00
grid 9.66
May 24 total 9.66
grid 23.49
May 26 total 23.49
grid 71.23
May 27 total 71.23
grid 57.33
May 28 total 57.33
grid 32.51
May 29 total 32.51
grid 100.73
Today total 100.73

at

三天後的下午 5點鐘執行 /bin/ls
[ora11g@rac1 ~]$ at 5pm+3 days
at> ls
at>
job 2 at 2014-06-04 17:00

 

bc

很簡潔的計算器
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
7+8
15
9*5
45

 

cc

這個精簡的命令背後的後盾就是gcc
[ora11g@rac1 bin]$ ll cc
lrwxrwxrwx. 1 root root 3 Mar 13 2013 cc –> gcc

 

dc

逆波蘭表示式,比如像檢視55*11的結果。
[ora11g@rac1 bin]$ dc
55
11
*
p
605
q

du

檢視目錄的大小,k為k bytes,h代表m bytes
[ora11g@rac1 test]$ du -sk .
10968 .
[ora11g@rac1 test]$ du -sh .
11M

ex, vi的一種靈活的實現,比如顯示第2,3行。檢視當前行

[ora11g@rac1 ~]$ vi -E a.lst
"a.lst" 3L, 43C
Entering Ex mode. Type "visual" to go to Normal mode.
:2,3
this is a test line2
:=
3
:.=
3
:q
[ora11g@rac1 ~]$ ex a.lst
"a.lst" 3L, 43C
Entering Ex mode. Type "visual" to go to Normal mode.
:2,3
this is a test line2
:.=
3
:=
3
:q
[ora11g@rac1 ~]$

id

檢視使用者的id和歸屬的組資訊
[ora11g@rac1 test]$ id
uid=505(ora11g) gid=501(dba) groups=501(dba)

nl

如果輸出的時候需要顯示行號,nl也是一個不錯的選擇。效果和cat -n等價
-bash-4.1$ cat a.txt
This price is $5.00
This price is $6.00
this is good
-bash-4.1$ nl a.txt
1 This price is $5.00
2 This price is $6.00
3 this is good
-bash-4.1$ cat -n a.txt
1 This price is $5.00
2 This price is $6.00
3 this is good

 

nm

查詢共享庫中的函式
比如我檢視oracle中的一些檔案中的函式,可以這樣
cd $ORACLE_HOME/rdbms
R ----Read only symbol 。比如在程式碼中有一個const MAXDATA = 110; 則MAXDATA就是一個Read only symbol;
N ----一個除錯符號;
D ----一個已經初始化的變數的符號。比如程式碼中int i = 1和char *str = "Hello"則i和str都是這種型別的符號 ;
T ----Text段的符號。子程式都是這種符號,比如檔案中實現了一個函式function,則function就是這種符號;
U ----未定義的符號。如果檔案中引用了不存在的函式,則這些未定義的函式就是這種型別;
S ----未初始化的符號。比如全域性變數int s ; 則s就是這種型別的符號。
[ora11g@rac1 lib]$ nm mapsga.o
0000000000000000 r _2__STRING.0.0
0000000000000048 r _2__STRING.1.0
000000000000006c r _2__STRING.10.0
000000000000007c r _2__STRING.11.0
00000000000000c8 r _2__STRING.12.0
0000000000000080 r _2__STRING.13.0
0000000000000098 r _2__STRING.14.0
00000000000000ec r _2__STRING.15.0
0000000000000114 r _2__STRING.16.0
00000000000000a8 r _2__STRING.17.0
00000000000000c4 r _2__STRING.18.0
0000000000000104 r _2__STRING.19.0
000000000000000c r _2__STRING.2.0
000000000000015c r _2__STRING.20.0
000000000000013c r _2__STRING.21.0
00000000000000dc r _2__STRING.22.0
00000000000000fc r _2__STRING.23.0
0000000000000000 r _2__STRING.24.0
0000000000000074 r _2__STRING.3.0
0000000000000018 r _2__STRING.4.0
00000000000000a0 r _2__STRING.5.0
0000000000000024 r _2__STRING.6.0
0000000000000038 r _2__STRING.7.0
000000000000004c r _2__STRING.8.0
000000000000005c r _2__STRING.9.0
U __intel_new_proc_init
U exit
U fflush
U getchar
U ksmgsgp_
0000000000000000 T main
000000000000034a T mapsga_gtln
00000000000003e6 T mapsga_help_msg
0000000000000420 T mapsga_parse
U skgsdsegmap
U skgsdsegunmap
U slosDep2Mesg
U slzgetevar
U slzprintf
U strncat
U strncpy

od

顯示檔案內容為八進位制,和它的全名Octal dump是一致的。
[ora11g@rac1 test]$ cat a
T 30
b 3
c 50
d 9
e 10
f 2
g 1
h 200
[ora11g@rac1 test]$ od a
0000000 020124 030063 061012 031440 061412 032440 005060 020144
0000020 005071 020145 030061 063012 031040 063412 030440 064012
0000040 031040 030060 000012
0000045
命令中各選項的含義:
- A 指定地址基數,包括:
d 十進位制
o 八進位制(系統預設值)
x 十六進位制
n 不列印位移值
- t 指定資料的顯示格式,主要的引數有:
c ASCII字元或反斜槓序列
d 有符號十進位制數
f 浮點數
o 八進位制(系統預設值為02)
u 無符號十進位制數
x 十六進位制數
[ora11g@rac1 test]$ od -Ax -tcx1 a
000000 T 3 0 \n b 3 \n c 5 0 \n d
54 20 33 30 0a 62 20 33 0a 63 20 35 30 0a 64 20
000010 9 \n e 1 0 \n f 2 \n g 1 \n h
39 0a 65 20 31 30 0a 66 20 32 0a 67 20 31 0a 68
000020 2 0 0 \n
20 32 30 30 0a

pr

這個命令是一個很強大的命令,可以完成特殊的行列轉換,可以把檔案的內容顯示為多個垂直列。
和word的分欄功能有些類似。
cat a
T 30
b 3
c 50
d 9
e 10
f 2
g 1
h 200
[ora11g@rac1 test]$ pr -h "this is a test for pr" -3 a
2014-07-05 00:56 this is a test for pr Page 1
T 30 d 9 g 1
b 3 e 10 h 200
c 50 f 2

ss

ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。
但ss的優勢在於它能夠顯示更多更詳細的有關TCP和連線狀態的資訊,而且比netstat更快速更高效。
[ora11g@rac1 test]$ ss
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 52 192.168.3.140:ssh 192.168.3.1:58555
ESTAB 0 0 192.168.3.140:ssh 192.168.3.1:50641
[ora11g@rac1 test]$ ss -i
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 52 192.168.3.140:ssh 192.168.3.1:58555
cubic rto:388 rtt:158.75/54 ato:40 cwnd:3 send 220.7Kbps rcv_rtt:202359 rcv_space:20552
ESTAB 0 0 192.168.3.140:ssh 192.168.3.1:50641
cubic rto:357 rtt:141.25/49.75 ato:40 cwnd:5 send 413.5Kbps rcv_rtt:19010 rcv_space:11956
[ora11g@rac1 test]$

tr

tr一般作為sed的精簡實現,常用作字元大小寫轉換。簡單的字元替換
像下面的例子,直接將檔案a的內容全部轉換為大寫
[ora11g@rac1 test]$ cat a |tr '[a-z]' '[A-Z]'
T 30
B 3
C 50
D 9
E 10
F 2
G 1
H 200

uz

從.gz資料夾中得到檔案的目錄結構,免去了解壓.gz檔案然後使用tar -tf這樣的步驟,直接一步搞定
[ora11g@rac1 test]$ uz ext_datapump.tar.gz|less
Extracting from "ext_datapump.tar.gz".
./ext_datapump/
./ext_datapump/compare/
./ext_datapump/compare/tmp_compare.sh
./ext_datapump/compare/batch_compare.sh
./ext_datapump/compare/a.log
./ext_datapump/compare/sqls/

wc

這個命令可以檢視檔案包含多少行,含有多少字元等等
[ora11g@rac1 test]$ cat test.sh |wc -l
27

xz

xz 是一個使用 LZMA壓縮演算法的無損資料壓縮檔案格式。 和gzip與bzip2一樣,同樣支援多檔案壓縮,但是約定不能將多於一個的目標檔案壓縮排同一個檔案檔案。
xz utils 是 lzma utils 的下一代lzma utils 改名 xz utils。
壓縮時 xz utils 耗時比 bzip2 長一倍,
壓縮時 xz utils 耗時是 lzma utils 一半,
壓縮時 xz utils 生成檔案體積是 bzip2 的一半,
壓縮時 xz utils 生成檔案體積比 lzma utils 略大,
解壓時 xz utils 耗時是 bzip2 的三分之一,
解壓時 xz utils 速度比 lzma utils 略快,
解壓時 xz utils 耗時僅比 gzip 多一倍。
壓縮時 xz utils 使用 *.xz 格式 生成檔案 比 *.lzma 格式 略大,
壓縮時 xz abc.zip 壓縮後生成abc.zip.xz檔案
解壓時,使用xz -d abc.zip.xz 檔案就會成為abc.zip

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347079/,如需轉載,請註明出處,否則將追究法律責任。

相關文章