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

10 个被遗忘的 Linux命令

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

  1. . V+ r) I) u. ?* k" F
  2. $ pgrep -u hchen( b) E+ Q! ^8 L
  3. 22441
    6 w/ C9 j* G  p( X$ D8 B
  4. 22444
复制代码

& F2 y5 l$ `$ `/ U3 v
这个命令相当于:
  • ps -ef | egrep '^hchen' | awk '{print $2}'
    . A2 r# x7 D4 n; c1 O4 l
2)pstree
这个命令可以以树形的方式列出进程。如下所示:$ u% n" j' x& V1 {3 P: {
  1. $ V3 f5 E8 g0 B0 a
  2. [hchen@RHELSVR5 ~]$ pstree2 r, I9 `& w& Q9 {
  3. init-+-acpid4 A3 c' Y( @" w% B2 \# [! c
  4.      |-auditd-+-python
    6 M* e0 i! K  M* `
  5.      |        `-{auditd}
    6 K+ z& R/ o2 U3 v/ S. B
  6.      |-automount---4*[{automount}]
    & g( Z8 J( z( n/ h+ Q% T
  7.      |-backup.sh---sleep2 `$ a3 C) x" o  J
  8.      |-dbus-daemon  c' F! w- Q& |; E% r! N
  9.      |-events/0+ \* P' A9 t3 L+ s
  10.      |-events/1
    0 P# i+ E7 C/ J
  11.      |-hald---hald-runner---hald-addon-acpi4 L6 M$ T4 L% U0 E/ q0 o
  12.      |-httpd---10*[httpd]6 {. b+ W( z9 }% T6 F; y# |# \9 q" n
  13.      |-irqbalance
    ' Y+ t4 I. s+ |8 s8 j4 T6 P4 G( x
  14.      |-khelper( t8 T2 U. w# r  _" [9 G
  15.      |-klogd
    3 r. b) B  Z1 x
  16.      |-ksoftirqd/0/ m& E9 f$ H  e6 S3 V" e6 z
  17.      |-ksoftirqd/10 `8 \( V7 B! K( L
  18.      |-kthread-+-aio/0
    0 x! z! `3 k* @! P& M& N
  19.      |         |-aio/1
    . K, X6 F5 B2 O* p- Y& M. b
  20.      |         |-ata/0/ j( a* e+ S5 r( a' F2 V
  21.      |         |-ata/14 ]1 q, g* a% U# R
  22.      |         |-ata_aux4 g: n) h4 O+ f: s
  23.      |         |-cqueue/0
    ! X9 f, a7 ?' e6 K2 e. F4 U: }
  24.      |         |-cqueue/11 d+ U% P, z5 c& r
  25.      |         |-kacpid
    $ i( W: I7 D+ @, |6 w* l7 `
  26.      |         |-kauditd
    / V) Y" }. I" l
  27.      |         |-kblockd/0) \) u+ T& f+ G
  28.      |         |-kblockd/18 ~/ Y' I8 m! g) r- A
  29.      |         |-kedac
    $ U9 c6 k$ ]% e8 J/ q$ O$ f
  30.      |         |-khubd. W! m! }1 i* _) d& h
  31.      |         |-6*[kjournald]
    ; @3 Z0 e  ^! `. w& ^& X* k
  32.      |         |-kmirrord
    7 \# v  H0 ~& q7 I& J6 m+ C: O
  33.      |         |-kpsmoused) v' }, ]& m" S; L* }6 j
  34.      |         |-kseriod$ u+ ~& U% N9 t7 r# S
  35.      |         |-kswapd0
    ) J6 M% ]( b9 ^; M
  36.      |         |-2*[pdflush]& n7 X0 V# B1 I' t( m/ E; I
  37.      |         |-scsi_eh_07 b2 J8 B% Q0 L4 n) ^! B% n
  38.      |         |-scsi_eh_1
    - z" B# N/ P8 F4 o% K$ `7 ?
  39.      |         |-xenbus0 D" t5 ]/ O1 ]# Z  M- P& J& P; ^) Q
  40.      |         `-xenwatch
    . B, ~+ U. `4 K' ^  ]
  41.      |-migration/0
    # B- S! f: d% X9 o
  42.      |-migration/1" n0 j+ ^5 T! k1 w  ^! O2 ?- F
  43.      |-6*[mingetty]4 h* b9 t& L% K$ s$ n
  44.      |-3*[multilog]1 C4 |( c/ ^$ ^  N9 f' l- U
  45.      |-mysqld_safe---mysqld---9*[{mysqld}]
    5 ^$ P8 S$ p8 o% W( }  m: i
  46.      |-smartd! k% V/ t; |* C0 H% y
  47.      |-sshd---sshd---sshd---bash---pstree4 K8 _, }' _; B+ W% p+ B
  48.      |-svscanboot---svscan-+-3*[supervise---run]
    % F* Y/ L& _" {6 C$ [! j1 u
  49.      |                     |-supervise---qmail-send-+-qmail-clean
    . B7 R  v6 n, j3 E# G7 t# H
  50.      |                     |                        |-qmail-lspawn
    ! e7 p- f! |+ b/ d. K
  51.      |                     |                        `-qmail-rspawn
    6 U# J" a+ ?; B
  52.      |                     `-2*[supervise---tcpserver]# y9 p3 s- }4 }- P6 K  `
  53.      |-syslogd- B9 M. b5 y" i
  54.      |-udevd
    + _' I2 h$ v9 s) M& Q; V
  55.      |-watchdog/0  w# [4 r9 L* ^
  56.      |-watchdog/1
    ) Q6 ^3 Q/ [  u$ G. o3 F% h
  57.      `-xinetd
复制代码
$ g9 \. N* g8 \( x
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
* C* E+ [+ z* A9 w7 k

  1. + p& u, {3 q( L) Y
  2. #!/bin/bash
    ; n- w  R* v7 n0 E

  3. * }) U) u: |! S2 Z# k& b/ p! i
  4. if [ $
    % x5 T/ p0 n5 z! \+ @
  5. then7 @: V+ p  C0 R% C+ L# \* [, x6 {
  6.     echo 'Usage: sqrt number'2 {& u2 r. R4 q; e
  7.     exit 1! F! R- B9 J/ ]- Z* G0 B) A
  8. else/ h( M6 \. E! n+ a: s
  9.     echo -e "sqrt($1)\nquit\n" | bc -q -i
    9 d! C; J! E( E+ X3 b/ y
  10. fi
复制代码

- Z$ h, o/ Z5 X3 D, Y2 g
于是,我们可以这样使用这个脚本进行平方根运算:
8 l5 c4 D4 B1 J
  1. , R& N  k8 o4 B
  2. [hchen@RHELSVR5]$ ./sqrt 36
    # G) y* N$ ?3 w2 e$ @; \) j
  3. 6
    5 F% G- k* ~; R4 |- R
  4. [hchen@RHELSVR5]$ ./sqrt 2.0000
    : _7 r4 _9 s: J4 z+ T: I
  5. 1.4142
    5 ], O. P, N, A9 v
  6. [hchen@RHELSVR5]$ ./sqrt 10.0000
    , w$ _/ K" ]8 }2 i
  7. 3.1622
复制代码
% m* o" S4 h+ d" _+ n9 L
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。
  1. 6 y6 w( T# V; X) f  i7 \
  2. [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
    1 s0 C) D+ C. s$ I$ m
  3. -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz, v% ^4 k8 V. a6 M& Y: C5 m
  4. / V: U7 S+ u: |5 k2 B* C4 L9 O. @
  5. [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
    0 L( e+ E5 L- k% }1 r$ t% i

  6. 4 H/ r" h+ M; I. }  i/ _+ H
  7. [hchen@RHELSVR5]# ls -l LF_*0 m+ x# C4 h9 Y8 J
  8. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa% n" l# P: T3 I4 x) N/ X) f# t( ^
  9. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
    . B/ ]8 v4 O: A- y  v+ n, s
  10. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
    . c# w, A2 ?4 d9 K0 j8 t* C
  11. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
    6 a; u1 N8 C+ k$ k
  12. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
    # R+ V, \  B2 u/ }0 F5 Q& M
  13. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
    7 C. D' Z7 b* G6 |* g
  14. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
    & S; }1 @( i, o. l' R5 v9 h' V/ b% F2 y6 T
  15. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah+ ?  f$ B/ a2 l! m
  16. -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码
5 i" [* n3 X( K% P" Y+ q  d$ U; b! l
文件合并只需要使用简单的合并就行了,如:
  • [hchen@RHELSVR5]#  cat LF_* >largefile.tar.gz
    , X6 [1 Z7 `& }5 Q" o& F5 \
5)nl
nl命令其它和cat命令很像,只不过它会打上行号。如下所示:

  1. % V$ w/ d  ]" [. E! u
  2. [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
    6 E0 m& x* [; W1 s! ]. `2 O
  3.      1  /* Define ISO C stdio on top of C++ iostreams.% r0 v( @, s, t
  4.      2     Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.; Q3 c; K, J3 ~# e: F
  5.      3     This file is part of the GNU C Library.
    # c) f, w+ C  @7 k2 }) `% w

  6. 0 ~4 l/ z. C  g; L
  7.      4     The GNU C Library is free software; you can redistribute it and/or9 J, o$ ^) A. S7 d4 q
  8.      5     modify it under the terms of the GNU Lesser General Public- z; V' U% X+ m
  9.      6     License as published by the Free Software Foundation; either) z7 w. Q4 o, b+ S6 V+ J
  10.      7     version 2.1 of the License, or (at your option) any later version.  T) i9 Z1 ?) w- _: m6 t! v
  11. ; H* c  ]4 m( z) t' G
  12.      8     The GNU C Library is distributed in the hope that it will be useful,
复制代码
% M  d/ ~1 |+ ?8 O
6)mkfifo
熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例:
下面是创建一个有名管道:

  1. 2 N8 c+ a# k: O+ T9 L5 _( G0 z
  2. [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe$ Q/ L6 a% K( l3 w- z
  3. : ]6 b7 q% C' r: V3 ~$ K9 \, x
  4. [hchen@RHELSVR5 ~]# ls -l /tmp$ q, x. b$ N/ j% K5 n- V- V$ x
  5. prw-rw-r-- 1 hchen  hchen  0 05-10 18:58 hchenpipe
复制代码

- r% z% m6 o; p. q
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
2 m3 v$ K' r# @* Z$ q
  • [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
    4 T' X5 Q1 `. p
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)
  v" a. l) S- G7 }: T/ h! [; U7 j
  1. 5 h7 e  {3 \* M8 U+ Q# I0 V  s- A
  2. [hchen@RHELSVR5 ~]# head /tmp/hchenpipe
    # [9 l/ r3 @% H% ?7 y& E
  3. drwx------ 8 hchen hchen    4096 05-10 18:27 .
    ! G  H6 R) J' i8 m+ ]9 l9 \
  4. drwxr-xr-x 7 root  root     4096 03-05 00:06 ..8 S( g# S1 J; C! c! A. j
  5. drwxr-xr-x 3 hchen hchen    4096 03-01 18:13 backup
    % X2 p0 Q' }$ g9 e/ J/ L4 C
  6. -rw------- 1 hchen hchen     721 05-05 22:12 .bash_history" c! H7 C2 m4 o7 a6 |& d8 @8 `
  7. -rw-r--r-- 1 hchen hchen      24 02-28 22:20 .bash_logout
    7 S: u! G% Z* f0 G: w/ C: D. \3 ^9 d
  8. -rw-r--r-- 1 hchen hchen     176 02-28 22:20 .bash_profile
    3 k2 a8 l5 Q" j; ]
  9. -rw-r--r-- 1 hchen hchen     124 02-28 22:20 .bashrc' c4 O( q1 z/ o1 ]( }
  10. -rw-r--r-- 1 root  root    14002 03-07 00:29 index.htm
    6 x- j) |) _  b! i
  11. -rw-r--r-- 1 hchen hchen   31465 03-01 23:48 index.php
复制代码
. n% t# S# E( J  T
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:

  1. / ?% e) f: p/ X. M; r; N2 T; r
  2. [hchen@RHELSVR5 ~]# ldd /usr/bin/java
    ( \; |: m1 {5 E/ U" z  I: O: f1 t
  3.         linux-gate.so.1 =>  (0x00cd9000)% x+ c6 c1 {6 R3 F5 F3 g. W
  4.         libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
    9 a' E( L/ I/ H& e% f1 H$ M
  5.         libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)  `7 [2 r& D7 R
  6.         libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
    4 q7 s$ }8 _" h+ O+ _/ s
  7.         librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
    ( x5 {5 v* L4 V" z3 C
  8.         libdl.so.2 => /lib/libdl.so.2 (0x008b5000)! T. k5 g. Z7 I: a7 `5 A- x2 Q0 c, F
  9.         libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)! h# o# |  C  v+ m: l% n$ E) D9 E
  10.         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000); t7 N6 t+ s+ R% h& d
  11.         libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
    ; N# Q5 z7 N8 A" I3 a. S0 u4 a
  12.         libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
    3 t$ }* @" M8 |9 ?! E! ~( n6 }% o
  13.         /lib/ld-linux.so.2 (0x00214000)
复制代码

; t/ B( Q( i- \7 a0 p
8)col
这个命令可以让你把man文件转成纯文本文件。如下示例:

  1. ! q0 D0 ~' h5 n+ Y; y
  2. # PAGER=cat
    # c$ [# T. B3 [' q+ t
  3. # man less | col -b > less.txt
复制代码
# n. c" z/ T  v9 T* e
9)xmlwf
这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:

  1. 6 k; S; T( _# M  F' h0 k
  2. [hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml; M5 X7 y/ X( [; N3 j, c) _
  3.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current# u4 X! P; x% S0 p
  4.                                  Dload  Upload   Total   Spent    Left  Speed
      \2 F& Q, Y& ?2 R
  5. 100 64882    0 64882    0     0  86455      0 --:--:-- --:--:-- --:--:-- 2073k$ q" x4 t+ m& k1 d$ ^, k
  6. [hchen@RHELSVR5 ~]# xmlwf cocre.xml( _# u0 [8 ^0 Q6 O8 H$ p
  7. [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
    ' K8 m9 ]& ]4 p) P4 p8 v, V
  8. [hchen@RHELSVR5 ~]# xmlwf cocre.xml
    : @0 T/ ]# j3 ]
  9. cocre.xml:13:23: mismatched tag
复制代码
9 h) j. U) n% j0 M6 S- {
10)lsof
可以列出打开了的文件。
  1. 9 d8 S* L; K  s3 C( ?9 t) \, _
  2. [root@RHELSVR5 ~]# lsof | grep TCP0 s" _& n- t! _  t0 L6 C% S6 U
  3. httpd       548    apache    4u     IPv6   14300967    TCP *:http (LISTEN)
    ; D( V$ P, C, P9 Y# G6 |2 A
  4. httpd       548    apache    6u     IPv6   14300972    TCP *:https (LISTEN)0 U: ]  `% @" w2 o! S
  5. httpd       561    apache    4u     IPv6   14300967    TCP *:http (LISTEN)5 E1 h9 J1 u+ i' t
  6. httpd       561    apache    6u     IPv6   14300972    TCP *:https (LISTEN)4 R+ t4 L* U2 ]
  7. sshd       1764      root    3u     IPv6       4993    TCP *:ssh (LISTEN)
    ( u+ a  s& j- n8 |
  8. tcpserver  8965      root    3u     IPv4  153795500    TCP *:pop3 (LISTEN)
      ^% f7 B) |, ]+ @
  9. mysqld    10202     mysql   10u     IPv4   73819697    TCP *:mysql (LISTEN)
    2 y  m& ]6 d; @  K/ X
  10. sshd      10735      root    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)7 U$ O5 p' l. i$ P) X, [
  11. sshd      10767     hchen    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)8 l# a$ a- M$ q& t
  12. vsftpd    11095      root    3u     IPv4  152157957    TCP *:ftp (LISTEN)
复制代码

& U1 |8 a& z( d( K9 E& Q
赞 收藏 评论0 发布时间:2020-11-13 22:56

举报

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