你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

10 个你不知道的Linux命令

[复制链接]
gaosmile 发布时间:2020-7-10 14:06
1)pgrep
pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:

  1. / ]. S2 }% y/ [4 H/ {/ ]; M
  2. $ pgrep -u hchen
    2 @0 }* r+ C8 v1 C+ U
  3. 22441
    * ~6 C. G+ e+ N$ R
  4. 22444
复制代码
3 ~* ?+ A: X5 ~% ?! _8 \
这个命令相当于:
  • ps -ef | egrep '^hchen' | awk '{print $2}'
    - q4 L4 ^7 [$ J" n1 l
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
  1. 2 f! t- M% e5 |" @& u
  2. [hchen@RHELSVR5 ~]$ pstree1 G% Z7 K. G% l- H
  3. init-+-acpid
    , P: k" G& X9 Z$ ~! s* U. z
  4.      |-auditd-+-python) d6 n: W0 M. t  g, y2 o  Q. C
  5.      |        `-{auditd}
    0 m0 b+ T4 j; D) K  R. y: D6 @  X" H
  6.      |-automount---4*[{automount}]
    2 Y! P$ w' o* ^3 ~* n
  7.      |-backup.sh---sleep0 u9 P4 O$ k8 y/ C
  8.      |-dbus-daemon
    4 q) q- r5 u& a" F% G
  9.      |-events/0
    1 j* j: z6 D8 {$ K
  10.      |-events/1
    , k, t3 p' _; z* X. E( k$ K- w$ R' k
  11.      |-hald---hald-runner---hald-addon-acpi
    ; d# ?: T' b- ]0 f0 Y
  12.      |-httpd---10*[httpd]' y# W- s& N" k9 J9 ?
  13.      |-irqbalance/ M, L7 e7 V* n' v( }/ ^8 J
  14.      |-khelper% \! x% \# {! a* x& A
  15.      |-klogd3 x- W% A4 J% c+ {7 L9 f
  16.      |-ksoftirqd/0( y) |5 B  b1 h% y& V
  17.      |-ksoftirqd/1  n9 I$ H( L' P$ S  H
  18.      |-kthread-+-aio/0
    4 X& L$ M. n5 ^
  19.      |         |-aio/1& s4 e6 Y2 X7 K" Q  ]
  20.      |         |-ata/0+ u- p# g6 x+ O; U. G- ]# U
  21.      |         |-ata/1' `  v0 w( O5 c! U4 Q8 G( c
  22.      |         |-ata_aux' E' ]/ k" _% I7 T' v
  23.      |         |-cqueue/09 C" ~) h3 x% k' ~3 Q. r* m' E
  24.      |         |-cqueue/1' k' C/ a2 G  R9 e; Q' g* v
  25.      |         |-kacpid' N1 s( t1 z6 m( `
  26.      |         |-kauditd- I+ D( W0 i0 i, e( W# H
  27.      |         |-kblockd/0
    / m9 z8 B9 e+ q% ^
  28.      |         |-kblockd/1+ e  }% ~" l# Q2 c; n6 Z6 D
  29.      |         |-kedac. a% M7 R; ?+ R. G- F9 D7 V" D
  30.      |         |-khubd
    9 k, Z& D, ~9 N7 y
  31.      |         |-6*[kjournald]
    3 `4 N3 b2 z9 h( j+ Q/ V5 A
  32.      |         |-kmirrord4 P, d0 O# x% |, O% r
  33.      |         |-kpsmoused6 K7 j6 L2 ^; t1 |( R
  34.      |         |-kseriod1 |% ?0 c7 _9 a) `; X
  35.      |         |-kswapd0' U+ X0 @7 }. t, I; \" k
  36.      |         |-2*[pdflush]. s8 J7 a; K5 ^, T! K
  37.      |         |-scsi_eh_0% v3 F3 U9 P- t6 ~/ y3 r7 ~4 S
  38.      |         |-scsi_eh_1/ N) M# ?4 \8 G  F
  39.      |         |-xenbus6 z) ~0 [1 B0 J: e  I- e, P
  40.      |         `-xenwatch& v6 q3 B1 p/ y2 f( E0 e$ f
  41.      |-migration/0( M# G  Y1 Y1 P3 a) j
  42.      |-migration/1
    * p# M- X! `; R
  43.      |-6*[mingetty]
    . w6 z: b! t# M6 j& u6 n
  44.      |-3*[multilog]
    3 E& @7 P( h  B2 X' `( r. a
  45.      |-mysqld_safe---mysqld---9*[{mysqld}]
    / f' t) W5 S3 h$ a$ E
  46.      |-smartd6 D- X) ]6 E# i) C" g' C$ K' }
  47.      |-sshd---sshd---sshd---bash---pstree/ W8 o. [; r; u5 R8 z& s: n
  48.      |-svscanboot---svscan-+-3*[supervise---run]; {' j. _: Z& ?4 [" W( A+ T4 P
  49.      |                     |-supervise---qmail-send-+-qmail-clean5 w( [4 W, s8 s, d* T* q& _0 W! l
  50.      |                     |                        |-qmail-lspawn  b( u/ w: M. I) s# n! ?
  51.      |                     |                        `-qmail-rspawn, p% d( O6 T3 @9 B: V
  52.      |                     `-2*[supervise---tcpserver]1 `4 U- a; [% x2 {2 s0 H, _
  53.      |-syslogd( n% W2 F8 G* m4 F
  54.      |-udevd& T7 |( U+ Y2 Q% ?
  55.      |-watchdog/0
    + ]# N! }0 p9 F7 ~) [/ H8 T
  56.      |-watchdog/1& b. I( i* m5 s& T4 E
  57.      `-xinetd
复制代码

/ L' W, t, `$ W8 t, I
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
  1. 5 ?1 l) Z0 F' R- D6 U* i- k
  2. #!/bin/bash
    8 D) v4 ^  G! y0 W6 V- o

  3. + q, O9 B& P) g3 h8 J$ ~
  4. if [ $
    - }9 F& h! w" u: M+ L3 \3 u
  5. then
    & [/ G& E/ H# e1 |8 s. [
  6.     echo 'Usage: sqrt number'* {  o4 ^+ _8 y9 U  w* Q+ B
  7.     exit 1  ?8 }7 D0 d2 m0 d" M7 M/ O
  8. else
    . \3 U, V# i& |6 o+ q0 p
  9.     echo -e "sqrt($1)\nquit\n" | bc -q -i* Z) d3 U% t  D7 U& P3 _
  10. fi
复制代码
# l" L. S  Q' c  ]: A
于是,我们可以这样使用这个脚本进行平方根运算:
  1. % \: u$ d/ ]9 \
  2. [hchen@RHELSVR5]$ ./sqrt 36
    ) ]) B6 U6 |/ [' m
  3. 6" k# n$ u0 |3 `* x' e
  4. [hchen@RHELSVR5]$ ./sqrt 2.0000
    1 C8 ]; ], b+ d* c' C; K6 Q* r
  5. 1.4142' y, E) m' v( o  O2 v
  6. [hchen@RHELSVR5]$ ./sqrt 10.00007 s3 ]0 n) O* U" l: e2 f
  7. 3.1622
复制代码
) R* [4 \' C  {6 L
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
  1. 9 V" X! I# z$ P+ o$ ^
  2. [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz5 w/ U7 L5 s; Z; F4 h
  3. -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz3 n3 v2 C  g1 k: \

  4. 9 v. R( E* R) `' I2 }  J: A
  5. [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_2 B; v9 ^) Z3 ^) J- \

  6. ) J5 R+ p/ O" `+ d7 r9 X
  7. [hchen@RHELSVR5]# ls -l LF_*. I- H/ P0 a. N% G3 T, Y
  8. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa- X2 l: G9 K( I5 r- i0 x9 {
  9. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
    ) h4 c0 F% y$ w+ p" V: K: O
  10. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
    4 @; }# g5 Y: A2 K4 i  {
  11. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
    1 @5 r3 N. u, i+ s' y/ ~
  12. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
    8 W' O) a- `" h, W6 ?) f
  13. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
    $ @) R% r$ p3 E8 t+ d
  14. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag: S/ v9 S! h. d- F0 {; r6 N
  15. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah$ G& W: c" t; q1 u1 F) |/ P
  16. -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码

' a( U8 }2 b# p, c% ^- T& d
文件合并只需要使用简单的合并就行了,如:
  • [hchen@RHELSVR5]#  cat LF_* >largefile.tar.gz
    / b9 ~) l3 T. E/ s  W+ v& J
5)nl
nl命令其它和cat命令很像,只不过它会打上行号。如下所示:

  1. / a: Z# ~% _) n- m/ j& d
  2. [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
    $ z3 _! B6 B" ~1 ^" Q% k
  3.      1  /* Define ISO C stdio on top of C++ iostreams.
    % m7 g6 ~. ^1 D+ ~# q
  4.      2     Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.0 |5 c1 I- I5 R/ u$ Z* h" Y& d
  5.      3     This file is part of the GNU C Library.
    : i! J& `( s4 j/ V0 p1 d, D) `" B
  6. & H3 ?  x3 Y5 B( x; M# E& }
  7.      4     The GNU C Library is free software; you can redistribute it and/or, r/ H" {* T. ]6 S% H2 O5 l$ q
  8.      5     modify it under the terms of the GNU Lesser General Public
    7 p. }( N& S% z0 @  [
  9.      6     License as published by the Free Software Foundation; either
    ) b/ Q- Q2 y3 Z
  10.      7     version 2.1 of the License, or (at your option) any later version./ j) I9 B) g/ s& N, K" r# B) ?
  11. + y; l5 \* e/ h+ n* S9 t
  12.      8     The GNU C Library is distributed in the hope that it will be useful,
复制代码
( V- k3 P* r; e3 A& B9 ^1 g& B1 C3 T
6)mkfifo
熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例:
下面是创建一个有名管道:

  1. ) g& ~0 a* r- r4 e
  2. [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
    7 B7 A4 l" j- R0 a) b1 S8 r

  3. * F7 _4 ]( r/ E3 |
  4. [hchen@RHELSVR5 ~]# ls -l /tmp
    1 X% o3 j3 a0 d  ?2 X9 f0 S
  5. prw-rw-r-- 1 hchen  hchen  0 05-10 18:58 hchenpipe
复制代码
* y$ j1 z' d% X! o
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
  • [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
    / A3 J1 i( J4 N
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
  1. ' `, P8 U: ^! T% n
  2. [hchen@RHELSVR5 ~]# head /tmp/hchenpipe0 O/ i+ M' O: u# f( }# i3 A! y
  3. drwx------ 8 hchen hchen    4096 05-10 18:27 .
    5 H: i  H) x4 w& \6 ]5 F
  4. drwxr-xr-x 7 root  root     4096 03-05 00:06 ..
    ; B5 n" O- ~3 ?  j0 Z2 Z+ B
  5. drwxr-xr-x 3 hchen hchen    4096 03-01 18:13 backup. a, [" q+ x5 e8 V' a$ r" ]1 _
  6. -rw------- 1 hchen hchen     721 05-05 22:12 .bash_history
    $ f- Y0 G+ a; B) C" C# a0 t
  7. -rw-r--r-- 1 hchen hchen      24 02-28 22:20 .bash_logout1 g$ O' [  ]8 J* T& {
  8. -rw-r--r-- 1 hchen hchen     176 02-28 22:20 .bash_profile$ `& B. V/ Z. M6 p! O7 ^3 ^+ Z
  9. -rw-r--r-- 1 hchen hchen     124 02-28 22:20 .bashrc
    8 ^  s# K" P/ K/ l$ _$ O& o+ V# I2 A
  10. -rw-r--r-- 1 root  root    14002 03-07 00:29 index.htm
    2 n( S% k8 D! J0 o: m8 Z1 O1 \- M
  11. -rw-r--r-- 1 hchen hchen   31465 03-01 23:48 index.php
复制代码
/ v& z  p/ J8 _2 s
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:

  1. , T6 V4 l( {! @- M* T
  2. [hchen@RHELSVR5 ~]# ldd /usr/bin/java
    . @# r! ]( e3 r2 B/ s. t# S
  3.         linux-gate.so.1 =>  (0x00cd9000)" }4 K: W. c4 k* q
  4.         libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
    : [) z* q2 A' b' i5 w* a
  5.         libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
    8 t+ }2 V9 \- x6 l5 }; G
  6.         libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)% g; ^& D1 ?6 _- A
  7.         librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
    $ t/ N+ S/ E0 G/ [
  8.         libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
    % \! j# e7 g8 ]
  9.         libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
    ; L5 b& x$ H* H6 ~" u- o4 C0 l& T
  10.         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
    8 G  B3 D+ R+ |. c0 w
  11.         libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)( |: s2 ~9 h) |6 k
  12.         libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
    8 b# i4 q9 l  L8 o6 l
  13.         /lib/ld-linux.so.2 (0x00214000)
复制代码

% m* V# v# ~+ B$ [% `# {" K
8)col
这个命令可以让你把man文件转成纯文本文件。如下示例:
  1. - t: r; O% q& `$ T% d
  2. # PAGER=cat
    / T9 v& n3 Y5 s9 B
  3. # man less | col -b > less.txt
复制代码
1 |# J, F, j7 [
9)xmlwf
这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:

  1. 0 E: U/ t8 b' `
  2. [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml% e- Z% V) Z+ ]- Z6 M7 w( S
  3.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current& a  \7 l+ T% w6 d# F
  4.                                  Dload  Upload   Total   Spent    Left  Speed
    " O, h1 F& s& R- h5 j1 n- l
  5. 100 64882    0 64882    0     0  86455      0 --:--:-- --:--:-- --:--:-- 2073k( ~+ k* e& c6 z- P' P
  6. [hchen@RHELSVR5 ~]# xmlwf cocre.xml
    5 Z( x4 Y6 u' L1 `; v3 G
  7. [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
    - {) T7 v3 N7 _8 Y  `9 l
  8. [hchen@RHELSVR5 ~]# xmlwf cocre.xml% N8 K0 Z6 S7 i
  9. cocre.xml:13:23: mismatched tag
复制代码

' y3 A- l' _; k% Z) r
10)lsof
可以列出打开了的文件。
  1. ! K8 T5 q7 o# Z4 q2 W
  2. [root@RHELSVR5 ~]# lsof | grep TCP- o" c# D* v0 K0 B5 O. M
  3. httpd       548    apache    4u     IPv6   14300967    TCP *:http (LISTEN)$ d+ r/ |# ?0 T: A) A
  4. httpd       548    apache    6u     IPv6   14300972    TCP *:https (LISTEN)
    $ v6 _$ Y( n# V
  5. httpd       561    apache    4u     IPv6   14300967    TCP *:http (LISTEN)
    ( \: h* @4 d& ^5 j0 ?1 x2 F
  6. httpd       561    apache    6u     IPv6   14300972    TCP *:https (LISTEN)
    - O9 N# Y' M) n5 C1 e5 s4 D$ z
  7. sshd       1764      root    3u     IPv6       4993    TCP *:ssh (LISTEN)
    5 P" f1 H/ y+ t2 ?6 |9 Y* x, W; Z
  8. tcpserver  8965      root    3u     IPv4  153795500    TCP *:pop3 (LISTEN)
    + r- K7 t  W$ q7 @- G0 w. w) g: n
  9. mysqld    10202     mysql   10u     IPv4   73819697    TCP *:mysql (LISTEN)
    . ~8 b  l! |! t
  10. sshd      10735      root    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)+ b! Y8 @6 k2 D; [% M; K1 S' f5 G
  11. sshd      10767     hchen    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
    8 u: w) L" w" z! t
  12. vsftpd    11095      root    3u     IPv4  152157957    TCP *:ftp (LISTEN)
复制代码
' ~7 s. F- l) o+ Z8 _) ?8 S( d' x
1 @1 ^4 U* Q3 a% K
收藏 评论1 发布时间:2020-7-10 14:06

举报

1个回答
李康1202 回答时间:2020-7-10 15:58:23
顶一下
% g! [, q" u0 y3 I; J% W6 p' F3 \) W

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版