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

10 个你不知道的Linux命令

[复制链接]
gaosmile 发布时间:2020-7-10 14:06
1)pgrep
pgrep名字前有个p,我们可以猜到这和进程相关,又是grep,当然这是进程相关的grep命令。不过,这个命令主要是用来列举进程ID的。如:
  1. 1 U/ j- t( A  g" p$ d& Y5 Y
  2. $ pgrep -u hchen
    : S3 ?5 w& m7 g5 i* L
  3. 22441
    4 U+ M, p6 j. R
  4. 22444
复制代码

8 w* u9 y) U. X6 a3 }- z6 h$ ^
这个命令相当于:
  • ps -ef | egrep '^hchen' | awk '{print $2}'& L  X9 e* G  ?, x. Q# J' e' X
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
  1. & E# N2 c3 |8 \" `$ A- }0 a* l- n% y
  2. [hchen@RHELSVR5 ~]$ pstree
    ; q& e* V7 m( }$ C/ O: C
  3. init-+-acpid9 `- K; ^$ l" ^
  4.      |-auditd-+-python* T5 D6 ]& a" G  y0 [9 L3 s; Z4 R
  5.      |        `-{auditd}
    & b* l9 g3 Q( O( M+ @/ Q
  6.      |-automount---4*[{automount}]
    / V! S" m8 {, X( X7 `! T1 X
  7.      |-backup.sh---sleep
    5 ~. Q- V( ?$ Y! [! N$ ?0 k
  8.      |-dbus-daemon$ C& k1 o2 D. O7 a+ a  J
  9.      |-events/0! y1 r+ k, M! |+ z$ e- N% g# L) j! i9 Q
  10.      |-events/1
    1 n. O, n! b9 z. x% F: h
  11.      |-hald---hald-runner---hald-addon-acpi, d& P; |+ U* y2 r) z' z
  12.      |-httpd---10*[httpd]
    - B" G7 L& C4 v6 ?2 K7 V0 c& Z8 p6 m
  13.      |-irqbalance  E: ^4 ]/ g& |  U  i
  14.      |-khelper: @2 O- d, `. `0 D( k) [
  15.      |-klogd
    / P  W% u0 c8 ?! Y' @; J  `
  16.      |-ksoftirqd/0: }# Z4 a0 p1 P$ t
  17.      |-ksoftirqd/1
    . U, e% s8 G) _0 X# I" N' P6 |
  18.      |-kthread-+-aio/0$ L! `) L1 T5 {6 z
  19.      |         |-aio/1
    0 F7 e! U% |7 @0 a& Y& |+ Z6 T
  20.      |         |-ata/0
    , u2 R, C. u) [
  21.      |         |-ata/1+ q, F8 Y/ V. m4 i4 S* n
  22.      |         |-ata_aux+ z# ~- _4 C3 R) A
  23.      |         |-cqueue/0
    $ D* J" ^7 I3 k3 d
  24.      |         |-cqueue/1
    ; M6 k4 T: r) V8 C* _0 G
  25.      |         |-kacpid7 y8 n3 G% V) Z8 p
  26.      |         |-kauditd/ Z3 {+ v; g# m$ W" Z0 I
  27.      |         |-kblockd/0# J3 z! u7 x1 }8 X, }
  28.      |         |-kblockd/1
    $ v( d- _, `+ o8 k
  29.      |         |-kedac. W+ l: M3 E$ l) o, h$ j& `" M
  30.      |         |-khubd; i% g; U. C( E1 F' D
  31.      |         |-6*[kjournald]4 G$ \' U, H4 f' Z% R+ h4 |
  32.      |         |-kmirrord. a' o; ]; X) j' E! ?* G, J
  33.      |         |-kpsmoused; H5 d7 y, }& ~  _" n0 n
  34.      |         |-kseriod4 N  o) J' U& V  W0 P
  35.      |         |-kswapd0
    . r* S6 a0 x( s; A/ O
  36.      |         |-2*[pdflush]4 h* E4 c; Z5 q% F
  37.      |         |-scsi_eh_0  I) N3 r; o7 ?- O4 F7 x0 Z0 w. q2 P
  38.      |         |-scsi_eh_1
    $ H4 E. U( x3 W0 L. t2 w# C6 U
  39.      |         |-xenbus
    & N' E# n9 L2 ^- Y9 R, U
  40.      |         `-xenwatch$ J& E  j9 M9 B+ W2 ?( U* P2 E+ a
  41.      |-migration/0. _5 H9 ^4 c9 F) N, a3 w
  42.      |-migration/1
    ' u, @* E7 T2 T
  43.      |-6*[mingetty]$ x' ~% P. y  O3 _# N
  44.      |-3*[multilog]
    0 y% T9 u: P4 b+ R6 L) R) Q
  45.      |-mysqld_safe---mysqld---9*[{mysqld}]% R( X- T3 Z; O0 a  F) j
  46.      |-smartd, N1 a3 H+ i) b$ `5 [8 Q/ [7 @( l% |
  47.      |-sshd---sshd---sshd---bash---pstree. K+ b( |  v7 t  U3 ^
  48.      |-svscanboot---svscan-+-3*[supervise---run]
    ( f* c* F1 t8 K4 M; F
  49.      |                     |-supervise---qmail-send-+-qmail-clean* J% q6 A8 y- y3 H; }- Y: h
  50.      |                     |                        |-qmail-lspawn
    3 o1 B: b0 n) `& L& n% q; o. K2 m4 X
  51.      |                     |                        `-qmail-rspawn
    0 e5 P) K3 ]3 G, I  i" l* _
  52.      |                     `-2*[supervise---tcpserver]2 m; h& e' `2 \5 m: a. P
  53.      |-syslogd
    $ N5 S5 g  P6 T2 l: i8 P( G
  54.      |-udevd6 Q, W" ?1 X  ~" x8 m; ^" |% _
  55.      |-watchdog/05 ?! M7 q$ ^/ p$ x& o3 W7 U
  56.      |-watchdog/19 Z3 q+ U0 |9 f
  57.      `-xinetd
复制代码
9 _; P, q( e+ g; x6 i6 \$ \9 s
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)

  1. . y% \1 ?+ P3 O/ o+ u
  2. #!/bin/bash7 t5 J3 d0 i3 E  O+ B

  3. 5 F: b+ O2 q8 a* R4 o1 D
  4. if [ $4 N+ p/ Z: ]& C- S+ W" t
  5. then
    . I# F  P% A) Y8 u+ ]5 D
  6.     echo 'Usage: sqrt number'2 D0 \8 C2 w; w0 m2 X
  7.     exit 1
    0 p0 N* t8 x7 g% Q1 [
  8. else
    / K& u. Q/ R5 F; V; [
  9.     echo -e "sqrt($1)\nquit\n" | bc -q -i2 q! K3 v+ t# R8 u* Q
  10. fi
复制代码
! P: Y# I- ?4 q
于是,我们可以这样使用这个脚本进行平方根运算:
  1. ' `( T8 U0 K+ B! A7 @! n
  2. [hchen@RHELSVR5]$ ./sqrt 36
    8 u+ ~; r8 K8 r! J' `
  3. 6
    * X7 T* m$ {; S1 O: j
  4. [hchen@RHELSVR5]$ ./sqrt 2.00007 k; e( |2 W) D+ Q3 `" K
  5. 1.4142
    ( ^+ m1 t, X% y" _( R0 b) F- s
  6. [hchen@RHELSVR5]$ ./sqrt 10.0000
    / _( Q& e8 g! J3 Q
  7. 3.1622
复制代码
2 q0 y) S0 q% \
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。

  1. 7 ^$ |) o7 D9 F) P6 E% i) R! g/ _
  2. [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
    1 [+ Q7 c- J- \7 U! Q
  3. -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz5 d) R0 x1 }* l: [& e, f1 P

  4. . r1 f/ A. c5 {+ v
  5. [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_$ Z2 n1 F2 v9 \5 R9 U

  6. * G8 V/ j  l  F( _/ l# q8 o
  7. [hchen@RHELSVR5]# ls -l LF_*1 _8 D) a; e8 _# H4 X7 N
  8. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa3 L# g  Q/ M. Y
  9. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab; }! S5 {: m! z; X# d
  10. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
    1 U5 p& k8 g( U. Y7 H4 }! Q  |1 |
  11. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
    4 r! M  W( o/ n' f1 S  S6 R6 f8 |. }
  12. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae! J# r  r8 j( A: S) V3 y
  13. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
    4 l1 D  {3 X0 s: t
  14. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag* I* s3 T  m  G3 v; ?
  15. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah" g) F8 A8 q9 {1 Y0 v
  16. -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码
; E0 o* b& l( Q: L! w
文件合并只需要使用简单的合并就行了,如:
  • [hchen@RHELSVR5]#  cat LF_* >largefile.tar.gz
    ; v9 v6 t2 e! s, q, p
5)nl
nl命令其它和cat命令很像,只不过它会打上行号。如下所示:

  1. 4 t& a( F  B3 J
  2. [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
    ) b: W( e( D8 H
  3.      1  /* Define ISO C stdio on top of C++ iostreams.) U/ ~, a: k; C, G( Y* r
  4.      2     Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
    ! V- y( z7 v1 i, i" u
  5.      3     This file is part of the GNU C Library.
    # D. S# ~& X# _" P, T- X( `1 n- ]

  6. / C# R/ h# Q$ b4 m
  7.      4     The GNU C Library is free software; you can redistribute it and/or
    " Z* I% [0 [$ J2 K' d3 G
  8.      5     modify it under the terms of the GNU Lesser General Public" I9 H! t" R# r: E' W4 E
  9.      6     License as published by the Free Software Foundation; either
    8 n* W8 ^5 l, D' M; w+ i% X0 N- o" k
  10.      7     version 2.1 of the License, or (at your option) any later version.  Z, j; l+ }/ u# e# N

  11. / E' P! L+ b* H0 t
  12.      8     The GNU C Library is distributed in the hope that it will be useful,
复制代码

  \4 u3 V; ~  C  A6 T0 x
6)mkfifo
熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例:
下面是创建一个有名管道:
  1. * `7 H- s! P' G3 I  ?+ `
  2. [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe0 N& e6 t# g+ Q! {

  3. % I9 q: J$ N0 z- m( B; I
  4. [hchen@RHELSVR5 ~]# ls -l /tmp
    / [. P1 l3 z9 K* J5 ^- a* n
  5. prw-rw-r-- 1 hchen  hchen  0 05-10 18:58 hchenpipe
复制代码
0 q& I! [" e4 A9 ^- _
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
  • [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe6 `2 R' f2 A4 k1 R- |3 C2 D8 T& n
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
  1. / K2 H1 x) L" @/ v% Q
  2. [hchen@RHELSVR5 ~]# head /tmp/hchenpipe9 l+ N; K- @0 V0 C6 h
  3. drwx------ 8 hchen hchen    4096 05-10 18:27 .* ^/ t8 Q; `6 [0 t1 |4 _4 g( A: j
  4. drwxr-xr-x 7 root  root     4096 03-05 00:06 ..
    & C4 E: ~& P& l2 r
  5. drwxr-xr-x 3 hchen hchen    4096 03-01 18:13 backup8 s/ e: X1 ~" k. h7 L8 S) C
  6. -rw------- 1 hchen hchen     721 05-05 22:12 .bash_history
    ; a! W1 k$ K) k/ }) `5 v
  7. -rw-r--r-- 1 hchen hchen      24 02-28 22:20 .bash_logout: N& I: B* s/ i4 g& `
  8. -rw-r--r-- 1 hchen hchen     176 02-28 22:20 .bash_profile
    / j( a) \9 G  {8 v: R
  9. -rw-r--r-- 1 hchen hchen     124 02-28 22:20 .bashrc
    * l) b) e+ O+ I
  10. -rw-r--r-- 1 root  root    14002 03-07 00:29 index.htm
    8 p: ^; J7 D  ~5 z% |: ?
  11. -rw-r--r-- 1 hchen hchen   31465 03-01 23:48 index.php
复制代码

3 K  s4 d. L( W
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:

  1. + ~! a6 B0 E% @0 }+ U- c& G! y
  2. [hchen@RHELSVR5 ~]# ldd /usr/bin/java
      o1 ~( h( S3 J; K- ^7 |
  3.         linux-gate.so.1 =>  (0x00cd9000)) R% Y; M; K/ e! ]( B( L! Z6 ~
  4.         libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
    2 C' G) i0 e$ y; X2 X" }2 B
  5.         libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
    6 `  n- @4 k$ U
  6.         libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000); H. y1 Y  P! ]+ S
  7.         librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)1 X& _8 N; {: g3 K2 c9 x, C
  8.         libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
    " [" }  N* ~3 P/ W+ p% C
  9.         libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)% P( j' G5 O+ I/ T
  10.         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)  s' X8 g" a. E
  11.         libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000). Y- p! q  C5 @: x  i7 p
  12.         libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
    , E4 I+ P5 F$ W
  13.         /lib/ld-linux.so.2 (0x00214000)
复制代码
4 ^3 ^$ l0 B  i2 \' _
8)col
这个命令可以让你把man文件转成纯文本文件。如下示例:

  1. , |8 m. K; ~8 G/ F! U$ P
  2. # PAGER=cat6 A, s6 x  k! M# T' A
  3. # man less | col -b > less.txt
复制代码
6 d, c! c  @( x; k, k' t! @
9)xmlwf
这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:
  1. 8 x, ^7 ^7 ?: G/ p
  2. [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml
    ( H  c- j; F! r. i( @
  3.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    . ^6 R% G. D$ p& I. ]! v7 P
  4.                                  Dload  Upload   Total   Spent    Left  Speed; q. J2 z( n1 E5 S$ B
  5. 100 64882    0 64882    0     0  86455      0 --:--:-- --:--:-- --:--:-- 2073k2 Y2 h) H& X) Y$ p! t
  6. [hchen@RHELSVR5 ~]# xmlwf cocre.xml
    6 @5 q1 j2 b8 n
  7. [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
    ! N5 ?: A) K/ L5 `  `
  8. [hchen@RHELSVR5 ~]# xmlwf cocre.xml
    8 n8 H3 ]" B3 c+ `
  9. cocre.xml:13:23: mismatched tag
复制代码

% m* Z1 Z9 r9 M# f
10)lsof
可以列出打开了的文件。

  1. 1 P4 D4 }& g( o$ M$ T, T7 ]: E
  2. [root@RHELSVR5 ~]# lsof | grep TCP0 G/ K6 X; f+ I
  3. httpd       548    apache    4u     IPv6   14300967    TCP *:http (LISTEN)# R' v$ |9 [7 A7 {" W
  4. httpd       548    apache    6u     IPv6   14300972    TCP *:https (LISTEN)1 Z- M0 O" d! q( \$ B  f
  5. httpd       561    apache    4u     IPv6   14300967    TCP *:http (LISTEN)
    % ]. w0 E$ Q  p% H! g6 \
  6. httpd       561    apache    6u     IPv6   14300972    TCP *:https (LISTEN). t* @. `, m5 A
  7. sshd       1764      root    3u     IPv6       4993    TCP *:ssh (LISTEN)2 O+ F% J- U/ ?2 r+ H
  8. tcpserver  8965      root    3u     IPv4  153795500    TCP *:pop3 (LISTEN)4 h* m9 u) K1 b6 `/ B' k
  9. mysqld    10202     mysql   10u     IPv4   73819697    TCP *:mysql (LISTEN)
    ( W- I8 E/ H: N' {
  10. sshd      10735      root    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED). O2 `" o6 W" j8 b7 A
  11. sshd      10767     hchen    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
    / w1 Q1 q2 P) u" j# z" k
  12. vsftpd    11095      root    3u     IPv4  152157957    TCP *:ftp (LISTEN)
复制代码
. H9 z+ h1 U' c0 J+ D# `& y

, K% ]( t( _; e4 S% a
赞 收藏 评论1 发布时间:2020-7-10 14:06

举报

1个回答
李康1202 回答时间:2020-7-10 15:58:23
顶一下% ^& C" V0 ^/ ?

  U, X' x) \  D# L4 f
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版