Linux常用命令

[TOC]

nc

用于设置路由器,是网络工具中的瑞士军刀

  • 开启一个监听端口

    1
    nc -l 3003 # 开启一个对3003端口的监听。可以用于测试防火墙

netstat

查看Linux中网络系统状态信息

  • 用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同
  • 例子

    1
    2
    3
    4
    5
    6
    7
    # 查看 l-> socket , n-> 使用ip地址 , t -> tcp 协议 , p -> 正在使用 sockt 的程序识别码和程序名称 
    [root@VM_34_137_centos ~]# netstat -lntp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:42830 0.0.0.0:* LISTEN 7100/chrome
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1176/sshd
    tcp6 0 0 :::3001 :::* LISTEN 26678/node /home/wo

killall

按名字杀死进程

  • 用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    - Terminate a process using the default SIGTERM (terminate) signal:
    killall process_name

    - List available signal names (to be used without the 'SIG' prefix):
    killall --list

    - Interactively ask for confirmation before termination:
    killall -i process_name

    - Terminate a process using the SIGINT (interrupt) signal, which is the same signal sent by pressing Ctrl + C:
    killall -INT process_name

    - Force kill a process:
    killall -KILL process_name
  • 常用例子

    1
    killall -9 java   # 结束所有名字为 java 的进程

ps

ps命令用于报告当前系统的进程状态,可以搭配 kill 指令随时中断删除不必要的程序

  • 命令帮助

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    -a:		显示所有终端机下执行的程序,除了阶段作业领导者之外。
    a: 显示现行终端机下的所有程序,包括其他用户的程序。
    -A: 显示所有程序。
    -c: 显示CLS和PRI栏位。
    c: 列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
    -C <指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
    -d: 显示所有程序,但不包括阶段作业领导者的程序。
    -e: 此选项的效果和指定"A"选项相同。
    e: 列出程序时,显示每个程序所使用的环境变量。
    -f: 显示UID,PPIP,C与STIME栏位。
    f: 用ASCII字符显示树状结构,表达程序间的相互关系。
    -g <群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
    g: 显示现行终端机下的所有程序,包括群组领导者的程序。
    -G <群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
    h: 不显示标题列。
    -H: 显示树状结构,表示程序间的相互关系。
    -j 或j:采用工作控制的格式显示程序状况。
    -l或l:采用详细的格式来显示程序状况。
    L: 列出栏位的相关信息。
    -m或m:显示所有的执行绪。
    n: 以数字来表示USER和WCHAN栏位。
    -N:显示所有的程序,除了执行ps指令终端机下的程序之外。
    -p<程序识别码>:指定程序识别码,并列出该程序的状况。
    p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
    r:只列出现行终端机正在执行中的程序。
    -s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
    s:采用程序信号的格式显示程序状况。
    S:列出程序时,包括已中断的子程序资料。
    -t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
    t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
    -T:显示现行终端机下的所有程序。
    -u<用户识别码>:此选项的效果和指定"-U"选项相同。
    u:以用户为主的格式来显示程序状况。
    -U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
    U<用户名称>:列出属于该用户的程序的状况。
    v:采用虚拟内存的格式显示程序状况。
    -V或V:显示版本信息。
    -w或w:采用宽阔的格式来显示程序状况。 
    x:显示所有程序,不以终端机来区分。
    X:采用旧式的Linux i386登陆格式显示程序状况。
    -y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
    -<程序识别码>:此选项的效果和指定"p"选项相同。
    --cols<每列字符数>:设置每列的最大字符数。
    --columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
    --cumulative:此选项的效果和指定"S"选项相同。
    --deselect:此选项的效果和指定"-N"选项相同。
    --forest:此选项的效果和指定"f"选项相同。
    --headers:重复显示标题列。
    --help:在线帮助。
    --info:显示排错信息。
    --lines<显示列数>:设置显示画面的列数。
    --no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
    --group<群组名称>:此选项的效果和指定"-G"选项相同。
    --Group<群组识别码>:此选项的效果和指定"-G"选项相同。
    --pid<程序识别码>:此选项的效果和指定"-p"选项相同。
    --rows<显示列数>:此选项的效果和指定"--lines"选项相同。
    --sid<阶段作业>:此选项的效果和指定"-s"选项相同。
    --tty<终端机编号>:此选项的效果和指定"-t"选项相同。
    --user<用户名称>:此选项的效果和指定"-U"选项相同。
    --User<用户识别码>:此选项的效果和指定"-U"选项相同。
    --version:此选项的效果和指定"-V"选项相同。
    --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
  • 常用用法

    1
    2
    3
    ps -ef  # 显示所有进程,并显示UID,PPIP,C与STIME栏位
    #(参考上述 -e -f 详细介绍)
    ps aux # 显示所有正在运行的程序
  • 字段解释

    • PID (Process ID)

      PID 是程序被操作系统加载到内存成为进程后动态分配的资源。

      每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的。

    • PPID (Parent Process ID)

      PPID 是程序的父进程号

ps 配合 kill 批量杀进程

1
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
  • 命令拆解

    • ps -ef

      显示所有进程,并显示UID,PPIP,C与STIME栏位

    • grep java

      过滤出 “java” 关键字的进程(是以行为单位)

    • grep -v grep

      去除 grep 自身这条过滤命令 , -v 表示反向选择

    • awk ‘{print $2}’

      表示筛选出关注的进程号,$2 表示每行第二个变量。

      在这个例子的场景下,$2 代表的每行第二个变量就是进程号。

      如果使用的 ps 工具不一样,或者 ps 带的参数不一样,就需要注意修改,那样需要关注的可能就不是 $2 ,可能是 $1

    • xargs kill -9

      xargs 命令表示前面命令的输出结果(也就是一系列的进程号)作为 kill -9 命令的参数,-9 表示强制终止,不是必须的。

文章作者: 普通程序员
文章链接: https://programmerauthor.github.io/2020/04/29/linux-cmd/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 普通程序员