来源:51cto
下面可能是你不曾用过后十个Linux的命令。相当的有用。
1)pgrep
pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
view source
print?1.$ pgrep -u hchen
2.22441
3.22444
这个命令相当于:
view source
print?1.ps -ef egrep "^hchen" awk "print $2"
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
view source
print?01.[hchen@RHELSVR5 ~]$ pstree
02.init-+-acpid
03. -auditd-+-python
04.`-auditd
05. -automount4*[automount]
06. -backup.shsleep
07. -dbus-daemon
08. -events/0
09. -events/1
10. -haldhald-runnerhald-addon-acpi
11. -httpd10*[httpd]
12. -irqbalance
13. -khelper
14. -klogd
15. -ksoftirqd/0
16. -ksoftirqd/1
17. -kthread-+-aio/0
18.-aio/1
19.-ata/0
20.-ata/1
21.-ata_aux
22.-cqueue/0
23.-cqueue/1
24.-kacpid
25.-kauditd
26.-kblockd/0
27.-kblockd/1
28.-kedac
29.-khubd
30.-6*[kjournald]
31.-kmirrord
32.-kpsmoused
33.-kseriod
34.-kswapd0
35.-2*[pdflush]
36.-scsi_eh_0
37.-scsi_eh_1
38.-xenbus
39.`-xenwatch
40. -migration/0
41. -migration/1
42. -6*[mingetty]
43. -3*[multilog]
44. -mysqld_safemysqld9*[mysqld]
45. -smartd
46. -sshdsshdsshdbashpstree
47. -svscanbootsvscan-+-3*[superviserun]
48.-superviseqmail-send-+-qmail-clean
49. -qmail-lspawn
50. `-qmail-rspawn
51.`-2*[supervisetcpserver]
52. -syslogd
53. -udevd
54. -watchdog/0
55. -watchdog/1
56. `-xinetd
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
view source
print?1.#!/bin/bash
2.if [ $# -ne 1 ]
3.then
4. echo "Usage: sqrt number"
5. exit 1
6.else
7. echo -e "sqrt($1)\nquit\n" bc -q -i
8.fi
于是,我们可以这样使用这个脚本进行平方根运算:
view source
print?1.[hchen@RHELSVR5]$ ./sqrt 36
2.6
3.[hchen@RHELSVR5]$ ./sqrt 2.0000
4.1.4142
5.[hchen@RHELSVR5]$ ./sqrt 10.0000
6.3.1622
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
view source
print?01.[hchen@RHELSVR5 bak]# ls -l largefile.tar.gz
02.-rw-r--r-- 1 hchen hchen 436774774 04-1702:00largefile.tar.gz
03.
04.[hchen@RHELSVR5 bak]# split -b 50m largefile.tar.gz LF_
05.
06.[hchen@RHELSVR5]# ls -l LF_*
07.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa
08.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
09.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
10.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
11.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
12.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
13.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
14.-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah
15.-rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
文件合并只需要使用简单的合并就行了,如:
view source
print?1.[hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
5)nl
nl命令其它和cat命令很像,只不过它会打上行号。如下所示:
view source
print?01.[hchen@RHELSVR5 include]# nl stdio.h head -n 10
02. 1 /* Define ISO C stdio on top of C++ iostreams.
03. 2 Copycenter (C) 1991,1994-2004,2005,2006 FreeSoftwareFoundation, inc.
04. 3 This file is part of the GNU C Library.
05.
06. 4 The GNU C Library is free software; you can redistributeitand/or
07. 5 modify it under the terms of the GNU LesserGeneralPublic
08. 6 License as published by the Free SoftwareFoundation;either
09. 7 version 2.1 of the License, or (at your option) anylaterversion.
10.
11. 8 The GNU C Library is distributed in the hope that it willbeuseful,
6)mkfifo
熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例:
下面是创建一个有名管道:
view source
print?1.[hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
2.
3.[hchen@RHELSVR5 ~]# ls -l /tmp
4.prw-rw-r-- 1 hchen hchen 0 05-10 18:58 hchenpipe
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
view source
print?1.[hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
view source
print?01.[hchen@RHELSVR5 ~]# head /tmp/hchenpipe
02.drwx-- 8 hchen hchen 4096 05-10 18:27 .
03.drwxr-xr-x 7 root root 4096 03-05 00:06 ..
04.drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup
05.-rw 1 hchen hchen 721 05-05 22:12 .bash_history
06.-rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout
07.-rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile
08.-rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc
09.-rw-r--r-- 1 root root 14002 03-07 00:29 index.htm
10.-rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.php
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:
view source
print?01.[hchen@RHELSVR5 ~]# ldd /usr/bin/java
02. linux-gate.so.1 => (0x00cd9000)
03. libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
04. libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
05. libpthread.so.0 =>/lib/i686/nosegneg/libpthread.so.0(0x00110000)
06. librt.so.1 =>/lib/i686/nosegneg/librt.so.1(0x009c8000)
07. libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
08. libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
09. libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
10. libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
11. libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
12. /lib/ld-linux.so.2 (0x00214000)
8)col
这个命令可以让你把man文件转成纯文本文件。如下示例:
view source
print?1.# PAGER=cat
2.# man less col -b > less.txt
9)xmlwf
这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:
view source
print?1.[hchen@RHELSVR5 ~]# curl"http://cocre.com/?feed=rss2"> cocre.xml
2. % Total % Received % Xferd Average Speed Time TimeTimeCurrent
3. Dload Upload Total Spent center Speed
4.100 64882 0 64882 0 0 86455 0 --:--:-- --:--:----:--:--2073k
5.[hchen@RHELSVR5 ~]# xmlwf cocre.xml
6.[hchen@RHELSVR5 ~]# perl -i -pe"s@@
@g"cocre.xml
7.[hchen@RHELSVR5 ~]# xmlwf cocre.xml
8.cocre.xml:13:23: mismatched tag
10)lsof
可以列出打开了的文件。
view source
print?01.[root@RHELSVR5 ~]# lsof grep TCP
02.httpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN)
03.httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN)
04.httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN)
05.httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN)
06.sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN)
07.tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN)
08.mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN)
09.sshd 10735 root 3u IPv6 160731956TCP210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
10.sshd 10767 hchen 3u IPv6 160731956TCP210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
11.vsftpd 11095 root 3u IPv4 152157957 TCP *:ftp (LISTEN)
chengxcwl 于 2009-09-16 23:10:37发表:
貌似没见过!学习了
shenhao0129 于 2009-09-16 21:22:23发表:
貌似很多没有用过!{:2_94:}
liguoqingboy 于 2009-08-17 18:53:54发表:
学习学习。。。。
acrofox 于 2009-07-26 06:58:33发表:
只有第9个没用过。
死皮赖狗 于 2009-07-24 16:15:40发表:
了解了……
玩笑类 于 2009-07-24 14:07:47发表:
没见过!
balini 于 2009-07-23 20:00:47发表:
学习了........
you_me 于 2009-05-17 11:39:01发表:
学习了!
相思爱文 于 2009-05-15 21:50:34发表:
2457都常用。
文章用Discuz!代码排版,会更方便阅读。每个命令用大点字体会很清楚。
cwqing1973 于 2009-05-15 18:15:58发表:
支持一下,有见解。如有时间多来命令专区指导与帮助!
henryhj 于 2009-05-14 13:08:38发表:
6,9确实不曾用过