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

10 个被遗忘的 Linux命令

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

  1. : c( {. a# a1 K/ f/ `' n& e$ |! a! d3 ?
  2. $ pgrep -u hchen; f2 e% I/ T& D+ N
  3. 22441
    ' F1 _2 x/ V& Z( u* c1 c
  4. 22444
复制代码

. m" j; ~/ N" l" t2 S/ J
这个命令相当于:
  • ps -ef | egrep '^hchen' | awk '{print $2}'
    5 A6 y8 X* _0 N* C
2)pstree
这个命令可以以树形的方式列出进程。如下所示:
* _' ~# ?4 O; O6 H  X: l" o& O

  1. : g4 {- {" O% o. w! s% Y( c% B
  2. [hchen@RHELSVR5 ~]$ pstree8 d2 e1 E0 }. w( h% E2 D' {
  3. init-+-acpid) U% Z1 _5 Y+ M5 B' A. h" m2 d
  4.      |-auditd-+-python( ^% j5 @* D5 I, a; K" R. m0 |; }4 e
  5.      |        `-{auditd}8 J% ]6 \* W2 R4 V
  6.      |-automount---4*[{automount}]" w  |0 {3 h) G; X+ L
  7.      |-backup.sh---sleep* c( Y6 _: i0 N) A
  8.      |-dbus-daemon
    5 a# f. g  g8 J. y" j; X
  9.      |-events/07 T9 i+ z& H$ A$ a6 W; W% R8 t
  10.      |-events/1
    $ F" J  _$ L; S% P' X( I
  11.      |-hald---hald-runner---hald-addon-acpi
    0 V6 f! a$ d- t6 H) N
  12.      |-httpd---10*[httpd], K) }9 e) [; t1 \3 }# L
  13.      |-irqbalance
    $ h5 g- m+ |! I- L& J
  14.      |-khelper
    % n( q/ ?% N1 d0 {0 \
  15.      |-klogd& d9 i5 x  \& z4 d7 U$ g
  16.      |-ksoftirqd/0
    + J2 T, X6 ~* V  U" W9 J3 F
  17.      |-ksoftirqd/11 B- w3 g2 W. a, }: u
  18.      |-kthread-+-aio/08 N4 A+ P/ H+ D4 w, Z: Z
  19.      |         |-aio/1$ j- ~3 b9 G+ d# S: @
  20.      |         |-ata/0
    - T7 L: v0 L7 w5 D9 M
  21.      |         |-ata/1
      [& E/ v7 ]0 v: m) I
  22.      |         |-ata_aux) }. `% W3 G6 [2 w
  23.      |         |-cqueue/0) \7 n( s" m  ?" k
  24.      |         |-cqueue/14 d/ d: V" N1 e0 H" S/ h6 F
  25.      |         |-kacpid, b0 F- p2 @8 z- C& u, j. s
  26.      |         |-kauditd9 v' b9 i0 W* |- _
  27.      |         |-kblockd/0
    # X& i2 `7 Q, n( f- J2 M+ h5 f- P
  28.      |         |-kblockd/1
    + d) A% P( |. l8 k4 y
  29.      |         |-kedac0 m6 A) t7 q0 O0 X% f
  30.      |         |-khubd2 U5 ^0 a7 A  u+ S% s1 p4 f0 w
  31.      |         |-6*[kjournald]% k  q# }& G/ h' ]$ \- O4 w. R
  32.      |         |-kmirrord
    / E7 M. ^0 e( J6 Z0 E
  33.      |         |-kpsmoused
    ( H* m5 `5 _* w/ j5 \- [' \
  34.      |         |-kseriod( X- _7 r6 F! ?8 x+ S
  35.      |         |-kswapd0
    & ^  a+ {% N/ {; s
  36.      |         |-2*[pdflush]
    + I1 g* r* s0 ?! u$ j. M) c! I
  37.      |         |-scsi_eh_0
    4 ]" r' z5 Y: |! k; Z' o
  38.      |         |-scsi_eh_1' B' N$ _. C7 Y) E6 {
  39.      |         |-xenbus) Z1 G2 Z! J' e- Y' B5 }, u' ]
  40.      |         `-xenwatch- }4 S, u) C" w
  41.      |-migration/0' \! S9 H" ^; b) g1 |4 P$ i2 h2 S
  42.      |-migration/1
    ) x& d5 p1 h* q% G! a- L
  43.      |-6*[mingetty]
    2 d4 A$ a5 D: h
  44.      |-3*[multilog]
      ?3 J) }! j  W0 A' `# N
  45.      |-mysqld_safe---mysqld---9*[{mysqld}]1 Y2 D6 I' `, l3 Q
  46.      |-smartd
    ' H3 ~5 O+ v4 ?7 w3 Y+ \$ P
  47.      |-sshd---sshd---sshd---bash---pstree+ X4 u7 R2 N7 P# G# @
  48.      |-svscanboot---svscan-+-3*[supervise---run]
    # M+ H8 E# P1 T
  49.      |                     |-supervise---qmail-send-+-qmail-clean5 |+ F7 }0 e2 m
  50.      |                     |                        |-qmail-lspawn
    3 }% V, [  w; S
  51.      |                     |                        `-qmail-rspawn% s& K0 |0 T# Z1 g3 e
  52.      |                     `-2*[supervise---tcpserver], n: M4 j) w3 h. j* v0 H
  53.      |-syslogd
    $ b3 W) v& w- h+ r  h  q
  54.      |-udevd5 P" o' U9 b  g. y5 f
  55.      |-watchdog/0
    / b# t: F4 X8 b6 b. S" N
  56.      |-watchdog/1
    # F8 h- _7 I* Q  R3 s; [) K) b
  57.      `-xinetd
复制代码

5 Q: q; z4 Y, G! A. H1 j7 A6 D* Q
3)bc
这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用bc命令写的一个脚本(文件名:sqrt)
5 \/ d2 v: a$ V+ e6 [) |& _
  1. & M8 ~: P& Q* e$ B( `
  2. #!/bin/bash
    / j# I0 ~, T3 X; p+ r
  3. 0 D8 i4 o: l; O, _4 D$ ^" O
  4. if [ $% D( I5 ^& ]$ G: q: C8 i+ M! ?0 e
  5. then
    5 G7 f+ g0 N8 Y1 U0 D. X# V! L5 E* s
  6.     echo 'Usage: sqrt number'% U4 I+ Q1 v, ^) D! P( \% M
  7.     exit 1$ C5 }+ j2 P. a7 `; U* v+ l
  8. else
    " `* O  |( m- K
  9.     echo -e "sqrt($1)\nquit\n" | bc -q -i' k/ g. x: b" U
  10. fi
复制代码
( K7 c/ ]/ l2 T# ?6 ^7 C4 X6 i0 x+ y
于是,我们可以这样使用这个脚本进行平方根运算:
/ Y8 i9 e$ H+ H& V: ]( f0 E

  1. & y8 V! Z" O8 }* v8 N$ V
  2. [hchen@RHELSVR5]$ ./sqrt 36+ e6 ]$ x% K: R1 G
  3. 6
    / r9 k- E- S! |5 T- Z
  4. [hchen@RHELSVR5]$ ./sqrt 2.0000
    * o( ~1 _0 Z9 ^8 l4 \
  5. 1.4142
    ' u- P8 H" C* t  W
  6. [hchen@RHELSVR5]$ ./sqrt 10.0000
    2 Z5 O0 p! U4 M- _3 e
  7. 3.1622
复制代码

* i# q1 e: g4 v. i8 \! ^
4)split
如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。

  1. * V* Y1 L. C' s* s
  2. [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz$ i! w' |- N9 f# n; h  ]0 J
  3. -rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz( ]2 d/ O; ?3 o0 P$ y+ ^2 C) Q
  4. * ]; g+ p3 O1 A4 W& [
  5. [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
    ) D7 }, @: S, Q

  6. - h1 D" e: }* Y+ W! H, r9 B2 @
  7. [hchen@RHELSVR5]# ls -l LF_*% z; N+ W5 K3 E* B! b
  8. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa) W& R# }& [$ u. V
  9. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
    + a( V) p8 C  t/ r7 x
  10. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac- o! {+ d5 A; q; Q
  11. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad2 [0 a( J9 N+ B/ ?
  12. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
    ; S" q6 [0 U* u2 H
  13. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af7 j& h4 C( I9 {; [0 l0 `$ B
  14. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
    # l/ l% k; @  o: g
  15. -rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah; i  x2 p' I0 u; B
  16. -rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
复制代码

2 ?+ j4 k, n; U8 z) Y6 |
文件合并只需要使用简单的合并就行了,如:
  • [hchen@RHELSVR5]#  cat LF_* >largefile.tar.gz5 p2 `; T6 q6 M4 F8 R# E, E' T7 ^
5)nl
nl命令其它和cat命令很像,只不过它会打上行号。如下所示:

  1. 9 N7 G8 Z: C; r, `( \
  2. [hchen@RHELSVR5 include]# nl stdio.h | head -n 10
    ! C; r5 Y2 S* P* R
  3.      1  /* Define ISO C stdio on top of C++ iostreams.2 q: i& g' G( A' p
  4.      2     Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
    + t4 N0 I& t$ A' k' d) U
  5.      3     This file is part of the GNU C Library.* ]3 y- S" i6 {5 X, ?$ U

  6. 1 r* u/ R; W! N- s' d* i9 o) F
  7.      4     The GNU C Library is free software; you can redistribute it and/or) A1 T! o8 k# E) w5 D$ W5 J/ @
  8.      5     modify it under the terms of the GNU Lesser General Public
    . \' A. t; O$ C; u1 @1 _: E
  9.      6     License as published by the Free Software Foundation; either
    # F+ m" ~6 R& s  b! z
  10.      7     version 2.1 of the License, or (at your option) any later version.) H$ V4 [  u( O( }" U, P0 m/ M
  11. ( `* u" M4 \; V. W
  12.      8     The GNU C Library is distributed in the hope that it will be useful,
复制代码
/ D$ i7 U' Y1 ~- I* q5 a# c% x
6)mkfifo
熟悉Unix的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线“|”把命令串起来是使用无命管道。而我们使用mkfifo则使用的是有名管道。下面是示例:
下面是创建一个有名管道:

  1. ( {# T- G6 K1 b4 B: I
  2. [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
    ; W5 B9 Q$ @- s* \3 Q' r+ J

  3. ) S; u3 G( H1 ?7 p7 h- F
  4. [hchen@RHELSVR5 ~]# ls -l /tmp7 L# q5 o1 H2 _8 d- [
  5. prw-rw-r-- 1 hchen  hchen  0 05-10 18:58 hchenpipe
复制代码

+ o! M8 \8 a$ b3 h: ~5 {
然后,我们在一个shell中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。
2 }2 }/ j* b. c
  • [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
    ; z8 k/ f! v) q
我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)  K* [) G8 R4 \+ B, r4 O
  1. , R- E7 [0 S9 B6 C
  2. [hchen@RHELSVR5 ~]# head /tmp/hchenpipe# l6 K) y# ^+ N' c. D
  3. drwx------ 8 hchen hchen    4096 05-10 18:27 .$ @4 \$ Q1 ^4 _8 j
  4. drwxr-xr-x 7 root  root     4096 03-05 00:06 ..
    ! J$ K3 X+ f8 g4 z
  5. drwxr-xr-x 3 hchen hchen    4096 03-01 18:13 backup
    : K1 a  |3 i! u( W# P: R/ t3 u9 F
  6. -rw------- 1 hchen hchen     721 05-05 22:12 .bash_history. ?5 \" `7 y' Z' R* [1 o
  7. -rw-r--r-- 1 hchen hchen      24 02-28 22:20 .bash_logout
    " W, t# ?# O! H& @
  8. -rw-r--r-- 1 hchen hchen     176 02-28 22:20 .bash_profile
    & b; w, z+ ?1 A& n* i0 M4 Q
  9. -rw-r--r-- 1 hchen hchen     124 02-28 22:20 .bashrc
      m9 \5 O; W, T! [
  10. -rw-r--r-- 1 root  root    14002 03-07 00:29 index.htm
    ! B) [6 b/ G* U' F) L
  11. -rw-r--r-- 1 hchen hchen   31465 03-01 23:48 index.php
复制代码

0 A/ P  _* H7 i' z3 @
7)ldd
这个命令可以知道你的一个可执行文件所使用了动态链接库。如:

  1. 2 H. [& n, S( x  u
  2. [hchen@RHELSVR5 ~]# ldd /usr/bin/java) q$ w7 _2 z" F1 K$ q# c
  3.         linux-gate.so.1 =>  (0x00cd9000)
    $ U: a' X9 |2 x
  4.         libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
    ' w9 g9 q- F$ R, n$ M+ `4 i% j
  5.         libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
    " W  l; d. S; m& m3 T0 |0 w
  6.         libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
    % x" x( L/ K3 n: G5 e* q9 q
  7.         librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)  X1 J8 V* O# i* m1 @
  8.         libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
    # x: D4 w/ H8 k0 ~
  9.         libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
    4 t2 u) W4 Y$ a5 h# l
  10.         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
    ; H' g% u" P; @. ~5 Z# l
  11.         libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
    $ C+ a6 N/ B# ^9 Z% ^3 _# {
  12.         libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
    2 k2 K4 V3 c2 w7 F# i# H4 V2 H! [
  13.         /lib/ld-linux.so.2 (0x00214000)
复制代码
9 Y6 X' v  u( ^, d
8)col
这个命令可以让你把man文件转成纯文本文件。如下示例:
  1. 7 r) G2 ]7 }- {
  2. # PAGER=cat
    / w# p& N) q6 ]& a" m- s+ F" @
  3. # man less | col -b > less.txt
复制代码
# N* H# A; e, m6 k& V
9)xmlwf
这个命令可以让你检查一下一个XML文档是否是所有的tag都是正常的。如:

  1.   f, X- R8 E( _; B2 e, O: Q) _' Q
  2. [hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml
    8 `0 \5 n9 R1 S' O# S+ W
  3.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current* \( h, B" F1 C7 z8 R# q
  4.                                  Dload  Upload   Total   Spent    Left  Speed
    ' J# z1 k" _' x" P
  5. 100 64882    0 64882    0     0  86455      0 --:--:-- --:--:-- --:--:-- 2073k8 k8 \: O0 q% N3 c4 p6 l
  6. [hchen@RHELSVR5 ~]# xmlwf cocre.xml
    * W) W2 ?: {2 W
  7. [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml5 t( N% R$ x  f# n4 e; D8 E
  8. [hchen@RHELSVR5 ~]# xmlwf cocre.xml9 N! o3 L1 W3 @  l8 F" _4 N' ^
  9. cocre.xml:13:23: mismatched tag
复制代码
( r/ k' o9 T$ |
10)lsof
可以列出打开了的文件。

  1. " I, f% l' q0 r% m5 m! A6 G' Q
  2. [root@RHELSVR5 ~]# lsof | grep TCP
    ) }0 O* Q1 Z2 A3 U* _1 c
  3. httpd       548    apache    4u     IPv6   14300967    TCP *:http (LISTEN)# Z0 I6 G* [0 m: g* h  D
  4. httpd       548    apache    6u     IPv6   14300972    TCP *:https (LISTEN); W' z- L* V& p! S: |0 p
  5. httpd       561    apache    4u     IPv6   14300967    TCP *:http (LISTEN)
    8 b0 E( Z# j5 e2 _$ X
  6. httpd       561    apache    6u     IPv6   14300972    TCP *:https (LISTEN)' V2 z# F$ V7 N; q) T, V
  7. sshd       1764      root    3u     IPv6       4993    TCP *:ssh (LISTEN)6 f; m  ^6 m; A/ F, a% ^( q
  8. tcpserver  8965      root    3u     IPv4  153795500    TCP *:pop3 (LISTEN)
    0 X3 K3 c  g! K9 u' O7 z* b
  9. mysqld    10202     mysql   10u     IPv4   73819697    TCP *:mysql (LISTEN)
    7 n) e8 Y5 t' B+ {, o6 ^  S: g
  10. sshd      10735      root    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
    2 k' w9 Q! x' X* X& c4 L
  11. sshd      10767     hchen    3u     IPv6  160731956    TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)
    - [0 J+ w  T+ |6 j
  12. vsftpd    11095      root    3u     IPv4  152157957    TCP *:ftp (LISTEN)
复制代码

- j6 N# h# b5 b8 r
赞 收藏 评论0 发布时间:2020-11-13 22:56

举报

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