红联Linux门户
Linux帮助

十个你可能不曾用过的Linux命令

发布时间:2009-05-14 12:41:46来源:红联作者:Alsdwdz
  来源: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)
文章评论

共有 11 条评论

  1. chengxcwl 于 2009-09-16 23:10:37发表:

    貌似没见过!学习了

  2. shenhao0129 于 2009-09-16 21:22:23发表:

    貌似很多没有用过!{:2_94:}

  3. liguoqingboy 于 2009-08-17 18:53:54发表:

    学习学习。。。。

  4. acrofox 于 2009-07-26 06:58:33发表:

    只有第9个没用过。

  5. 死皮赖狗 于 2009-07-24 16:15:40发表:

    了解了……

  6. 玩笑类 于 2009-07-24 14:07:47发表:

    没见过!

  7. balini 于 2009-07-23 20:00:47发表:

    学习了........

  8. you_me 于 2009-05-17 11:39:01发表:

    学习了!

  9. 相思爱文 于 2009-05-15 21:50:34发表:

    2457都常用。
    文章用Discuz!代码排版,会更方便阅读。每个命令用大点字体会很清楚。

  10. cwqing1973 于 2009-05-15 18:15:58发表:

    支持一下,有见解。如有时间多来命令专区指导与帮助!

  11. henryhj 于 2009-05-14 13:08:38发表:

    6,9确实不曾用过