• Linux 常用终端命令整理


    linux系统中提供了大量的命令,该文整理了一份使用较为频繁的命令,并且我们对命令进行了一个详细的分类。

    一 、Linux命令格式

    1.1 Linux终端命令格式

    终端命令格式:

    command [-options] [parameter]

    说明:

    • command :命令名,相应功能的英文单词或单词的缩写;
    • [-options] :选项,可用来对命令进行控制,也可以省略;
    • parameter :传给命令的参数,可以是 零个、一个 或者 多个;

    在linux命令行中,命令的参数有的时候是一个连字符,有的时候是两个连字符。

    对于options类型参数可以有两种方式:

    • 短选项(short options):顾名思义,就是短小参数。它们通常包含一个连字号和一个字母(大写或小写字母),例如:-s,-h等。
    • 长选项(long options):长选项,包含了两个连字号和一些大小写字母组成的单词,例如:--size,--help等。

    注:

    1. 一个程序通常会提供包括short options和long options两种参数形式的参数,short options一般是其对应的long options的开头字母。

    2. - 和--可以用来做区分sh是一个选项还是两个选项s和h的组合。-sh是s和h的组合 --sh则说明sh是单一的选项。

    1.2 查阅命令帮助信息

    --help:显示 command 命令的帮助信息;

    [root@longmax2002 ~]# ls --help
    Usage: ls [OPTION]... [FILE]...
    List information about the FILEs (the current directory by default).
    Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
    
    Mandatory arguments to long options are mandatory for short options too.
      -a, --all                  do not ignore entries starting with .
      -A, --almost-all           do not list implied . and ..
          --author               with -l, print the author of each file
      -b, --escape               print C-style escapes for nongraphic characters
          --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                                   '--block-size=M' prints sizes in units of
                                   1,048,576 bytes; see SIZE format below
      -B, --ignore-backups       do not list implied entries ending with ~
      -c                         with -lt: sort by, and show, ctime (time of last

    man:查阅 command 命令的使用手册,man 是 manual 的缩写,是 Linux 提供的一个手册,包含了绝大部分的命令、函数的详细使用;

    man pwd

    使用 man 时的操作键:

    • 空格键:显示手册页得下一屏;
    • Enter键:一次滚动手册页得一行;
    • b:回滚一屏;
    • f:前滚一屏;
    • q:退出;
    • /word:搜索word字符串;

    二、文件相关命令

    2.1 创建文件(touch)

    touch命令:创建文件或修改文件时间,如果文件不存在,可以创建一个空白文件,如果文件已经存在,可以修改文件的末次修改日期。

    [root@longmax2002 zy]# touch test
    [root@longmax2002 zy]# ll
    total 0
    -rw-r--r-- 1 root root 0 Sep 29 13:18 test

    2.2 创建目录(mkdir)

    mkdir命令:创建一个新的目录。

    选项含义
    -p 可以递归创建目录

    新建目录的名称不能与当前目录中已有的目录或文件同名。

    [root@longmax2002 zy]# mkdir test
    mkdir: cannot create directory ‘test’: File exists

    2.3 删除文件/目录(rm)

    rm命令:删除文件或目录,使用 rm 命令要小心,因为文件删除后不能恢复。

    选项含义
    -f 强制删除,忽略不存在的文件,无需提示
    -r 递归地删除目录下的内容,删除文件夹时必须加此参数
    rm -rf test

    2.4 软/硬链接(ln)

    命令:

    ln -s 被链接的源文件 链接文件

    建立文件的软链接,用通俗的方式讲类似于Windows下的快捷方式。

    注意:

    1. 没有-s选项建立的是一个硬链接文件两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接。
    2. 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用。

    在 Linux 中,文件名和文件的数据是分开存储的:

    提示:

    • 在 Linux 中,只有文件的 硬链接数 == 0 才会被删除。
    • 使用 ls -l 可以查看一个文件的硬链接的数量。
    • 在日常工作中,几乎不会建立文件的硬链接。

    2.5 打包/解解包(tar)

    打包压缩 是日常工作中备份文件的一种方式,在不同操作系统中,常用的打包压缩方式是不同的:

    • Windows 常用 rar。
    • Mac 常用 zip。
    • Linux 常用 tar.gz。

    tar 是 Linux 中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件。

    tar 的命令格式如下:

    # 打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径...
    # 解包文件
    tar -xvf 打包文件.tar

    tar选项说明:

    选项含义
    c 生成档案文件,创建打包文件
    x 解开档案文件
    v 列出归档解档的详细过程,显示进度
    f 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后

    注意: f 选项必须放在最后,其他选项顺序可以随意。

    2.6 压缩/解压缩(tar)

    tar 与 gzip 命令结合可以使用实现文件打包和压缩,tar 只负责打包文件,但不压缩,用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz。

    在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz。

    在 tar 命令中有一个选项 -z 可以调用 gzip ,从而可以方便的实现压缩和解压缩的。

    功能命令格式如下:

    # 压缩文件
    tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
    # 解压缩文件
    tar -zxvf 打包文件.tar.gz
    # 解压缩到指定路径
    tar -zxvf 打包文件.tar.gz -C 目标路径
    选项含义
    -C 解压缩到指定目录,注意:要解压缩的目录必须存在

    tar 与 bzip2 命令结合可以使用实现文件打包和压缩(用法和 gzip 一样, tar 只负责打包文件,但不压缩,用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2。

    在 tar 命令中有一个选项 -j 可以调用 bzip2 ,从而可以方便的实现压缩和解压缩的功能。

    命令格式如下:

    # 压缩文件
    tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
    # 解压缩文件
    tar -jxvf 打包文件.tar.bz2

    2.7 查看文件(cat、more)

    cat 命令可以用来查看文件内容、创建文件、文件合并、追加文件内容 等功能。
    cat 会一次显示所有的内容,适合查看内容较少的文本文件。

    选项含义
    -b 对非空输出行编号
    -n 对输出的所有行编号
    [root@longmax2002 zy]# cat -n test
         1  222
         2  3333
         3  444
         4  5655
         5  67777

    Linux 中还有一个 nl 的命令和 cat -b 的效果等价。

    more 命令可以用于分屏显示文件内容,每次只显示一页内容,适合于 查看内容较多的文本文件。

    操作键功能
    空格键 显示手册页的下一屏
    Enter 键 一次滚动手册页的一行
    b 回滚一屏
    f 前滚一屏
    q 退出
    /word 搜索 word 字符串

    2.8 查找文件(find)

    find 命令功能非常强大,通常用来在特定的目录下,搜索符合条件的文件。

    命令:

    find [路径] -name “*.py”

    查找指定路径下扩展名是 .py 的文件,包括子目录。

    • 如果省略路径,表示在当前文件夹下查找;
    • 通配符,在使用 find 命令时同时可用;

    2.9 查看目录(ls)

    ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS下的 dir 命令。

    • Linux 文件或者目录名称最长可以有 256 个字符参数;
    • 以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示;
    • . 代表当前目录;
    • … 代表上一级目录;

    ls常用选项:

    参数含义
    -a 显示指定目录下所有子目录与文件,包括隐藏文件
    -l 以列表方式显示文件的详细信息
    -h 配合 -l 以人性化的方式显示文件大小

    ls通配符的使用:

    通配符含义
    * 代表任意个数个字符
    ? 代表任意一个字符,至少 1 个
    [] 表示可以匹配字符组中的任一一个
    [abc] 匹配 a、b、c 中的任意一个
    [a-f] 匹配从 a 到 f 范围内的的任意一个字符

    注意:以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示。

    [root@longmax2002 ~]# ls *
    node-v12.18.1-linux-x64.tar.xz
    
    logs:
    nacos
    
    nacos:
    naming
    
    node-v12.18.1-linux-x64:
    bin  CHANGELOG.md  include  lib  LICENSE  README.md  share

    tree 命令可以以树状图列出文件目录结构:

    选项含义
    -d 只显示目录

    2.10 切换目录(cd)

    cd 是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一。

    命令含义
    cd 切换到当前用户的主目录(/home/用户目录)
    cd ~ 切换到当前用户的主目录(/home/用户目录)
    cd . 保持在当前目录不变
    cd … 切换到上级目录
    cd - 可以在最近两次工作目录之间来回切换

    相对路径和绝对路径:

    • 相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对当前目录所在的目录位置;
    • 绝对路径 在输入路径时,最前面是 / 或者 ~,表示从根目录/家目录开始的具体目录位置;

    2.11 复制文件(cp)

    cp 命令的功能是将给出的文件或目录复制到另一个文件或目录 中,相当DOS 下的 copy命令。

    选 项含义
    -i 覆盖文件前提示
    -r 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必
    cp 源文件  目标文件(路径+可以重命名文件名)

    2.12 移动文件(mv)

    mv 命令可以用来移动文件或目录,也可以给文件或目录重命名。

    选项含义
    -i 覆盖文件前提示
    mv 源文件  目标文件(路径+文件名)
    mv 源文件  目标路径/

    2.13 文本搜索(grep)

    grep 命令是一种强大的文本搜索工具,grep 允许对文本文件进行模式查找,所谓模式查找,又被称为正则表达式。

    选项含义
    -n 显示匹配行及行号
    -v 显示不包含匹配文本的所有行(相当于求反)
    -i 忽略大小写

    常用的两种模式查找

    参数含义
    ^a 行首,搜寻以 a 开头的行
    ke$ 行尾,搜寻以 ke 结束的行
    [root@longmax2002 zy]# cat -n test
         1  222
         2  3333
         3  444
         4  5655
         5  67777
    [root@longmax2002 zy]# ^C
    [root@longmax2002 zy]# more test | grep -n -i  5655
    4:5655

    三、进程、内存系统信息相关命令

    3.1 查看系统

    uname  -a   (Linux查看版本当前操作系统内核信息)

    [root@longmax2002 yuncang]# uname -a
    Linux longmax2002 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

    cat /proc/version (Linux查看当前操作系统版本信息)

    [root@longmax2002 yuncang]# cat /proc/version
    Linux version 3.10.0-862.14.4.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed Sep 26 15:12:11 UTC 2018

    cat /etc/issue  或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)

    [root@longmax2002 yuncang]# cat /etc/issue
    S
    Kernel 
     on an m

    .getconf LONG_BIT  (Linux查看版本说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

     hostname (查看服务器名称)

    [root@longmax2002 yuncang]# hostname
    longmax2002

    cat /proc/cpuinfo( 查看CPU信息 )

    [root@longmax2002 yuncang]# cat /proc/cpuinfo
    processor       : 0
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 85
    model name      : Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
    stepping        : 7
    microcode       : 0x1
    cpu MHz         : 2500.016
    cache size      : 36608 KB
    physical id     : 0
    siblings        : 2
    core id         : 0
    cpu cores       : 1
    apicid          : 0
    initial apicid  : 0
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 22
    wp              : yes

    3.2 时间和日期(date、cal)

    date命令:查看系统时间。

    [root@longmax2002 zy]# date
    Wed Sep 29 13:41:41 CST 2021

    cal命令:calendar 查看日历, -y 选项可以查看一年的日历

    [root@longmax2002 zy]# cal
       September 2021
    Su Mo Tu We Th Fr Sa
              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

    3.3 进程信息(ps、top、kill、pgrep)

    所谓进程,通俗地说就是 当前正在执行的一个程序:

    Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

    ps [options] [--help]
    选项含义
    a 显示终端上的所有进程
    u 显示进程的详细状态
    x 显示没有控制终端的进程
    -A 显示终端上的所有进程
    -e 等于"-A"
    e 显示环境变量
    f
    显示程序间的关系

    ps aux:显示所有包含其他使用者的进程。

    [root@longmax2002 yuncang]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0  51736  2712 ?        Ss   May10   5:03 /usr/lib/syste
    root         2  0.0  0.0      0     0 ?        S    May10   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    May10   0:13 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S<   May10   0:00 [kworker/0:0H]
    root         7  0.0  0.0      0     0 ?        S    May10   0:05 [migration/0]
    root         8  0.0  0.0      0     0 ?        S    May10   0:00 [rcu_bh]
    root         9  0.0  0.0      0     0 ?        S    May10  39:39 [rcu_sched]
    root        10  0.0  0.0      0     0 ?        S<   May10   0:00 [lru-add-drain
    root        11  0.0  0.0      0     0 ?        S    May10   0:30 [watchdog/0]
    root        12  0.0  0.0      0     0 ?        S    May10   0:20 [watchdog/1]
    root        13  0.0  0.0      0     0 ?        S    May10   0:06 [migration/1]
    root        14  0.0  0.0      0     0 ?        S    May10   0:20 [ksoftirqd/1]
    root        16  0.0  0.0      0     0 ?        S<   May10   0:00 [kworker/1:0H]
    root        18  0.0  0.0      0     0 ?        S    May10   0:00 [kdevtmpfs]
    root        19  0.0  0.0      0     0 ?        S<   May10   0:00 [netns]
    root        20  0.0  0.0      0     0 ?        S    May10   0:07 [khungtaskd]
    root        21  0.0  0.0      0     0 ?        S<   May10   0:00 [writeback]
    root        22  0.0  0.0      0     0 ?        S<   May10   0:00 [kintegrityd]
    root        23  0.0  0.0      0     0 ?        S<   May10   0:00 [bioset]
    root        24  0.0  0.0      0     0 ?        S<   May10   0:00 [bioset]
    root        25  0.0  0.0      0     0 ?        S<   May10   0:00 [bioset]
    root        26  0.0  0.0      0     0 ?        S<   May10   0:00 [kblockd]
    root        27  0.0  0.0      0     0 ?        S<   May10   0:00 [md]
    root        28  0.0  0.0      0     0 ?        S<   May10   0:00 [edac-poller]
    root        35  0.0  0.0      0     0 ?        S    May10  58:07 [kswapd0]

    查找指定进程:

    ps -ef | grep 进程关键字

    显示指定用户进程信息:

    ps -u root

    根据端口获取进程pid:

    port=30999
    #根据端口号查找对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

    Linux top命令用于实时显示 process 的动态。

    显示进程信息:

    top - 14:26:38 up 141 days, 17:15,  1 user,  load average: 0.00, 0.10, 0.27
    Tasks:  86 total,   1 running,  85 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.2 us,  0.3 sy,  0.0 ni, 99.3 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  3880924 total,   682528 free,  1590964 used,  1607432 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  2034188 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     3441 mysql     20   0 1951624 639476   5048 S   0.3 16.5 518:43.85 mysqld
     7515 root      10 -10  141776  18480   4532 S   0.3  0.5  65:36.51 AliYunDun
     9827 root      10 -10   41932   1920    420 S   0.3  0.0   7:15.38 AliYunDunUpdate
    29249 root      20   0  145308   1500    248 S   0.3  0.0  82:52.92 redis-server
        1 root      20   0   51736   2712   1376 S   0.0  0.1   5:03.56 systemd
        2 root      20   0       0      0      0 S   0.0  0.0   0:00.08 kthreadd
        3 root      20   0       0      0      0 S   0.0  0.0   0:13.22 ksoftirqd/0
        5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
        7 root      rt   0       0      0      0 S   0.0  0.0   0:05.41 migration/0
        8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
        9 root      20   0       0      0      0 S   0.0  0.0  39:39.82 rcu_sched
       10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
       11 root      rt   0       0      0      0 S   0.0  0.0   0:30.64 watchdog/0
       12 root      rt   0       0      0      0 S   0.0  0.0   0:20.67 watchdog/1
       13 root      rt   0       0      0      0 S   0.0  0.0   0:06.88 migration/1
       14 root      20   0       0      0      0 S   0.0  0.0   0:20.14 ksoftirqd/1

    显示完整命令:

    top -c

    kill [-9] 进程代号:终止指定代号的进程, -9 表示强行终止。使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程

    选项描述
    -o 仅显示找到的最小(起始)进程号;
    -n 仅显示找到的最大(结束)进程号;
    -l 显示进程名称;
    -P 指定父进程号;
    -g 指定进程组;
    -t 指定开启进程的终端;
    -f 进程全名
    -u 指定进程的有效用户ID。

    查看指定名称的进程信息:

    [root@VM-0-17-centos server]# pgrep ngsp-cmc
    8564

    -n 当匹配多个进程时,显示进程号最大的那个:

    [root@VM-0-17-centos server]# pgrep -n ngsp-cmc
    8564

    3.4 磁盘信息(df、du)

    Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

    df [选项]... [FILE]...
    参数含义
    -a 包含所有的具有 0 Blocks 的文件系统
    --block-size={SIZE}  使用 {SIZE} 大小的 Blocks
     -i Inodes 列出 inode 资讯,不列出已使用 block
     -h  使用人类可读的格式

    显示文件系统的磁盘使用情况统计:

    [root@longmax2002 zy]# df
    Filesystem     1K-blocks     Used Available Use% Mounted on
    /dev/vda1       61794300 53811240   4821056  92% /
    devtmpfs         1929864        0   1929864   0% /dev
    tmpfs            1940460        0   1940460   0% /dev/shm
    tmpfs            1940460      676   1939784   1% /run
    tmpfs            1940460        0   1940460   0% /sys/fs/cgroup
    tmpfs             388096        0    388096   0% /run/user/0

    第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。

    使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。

    用一个-i选项的df命令的输出显示inode信息而非块使用量。

    Filesystem      Inodes IUsed   IFree IUse% Mounted on
    /dev/vda1      3932160 83009 3849151    3% /
    devtmpfs        482466   332  482134    1% /dev
    tmpfs           485115     2  485113    1% /dev/shm
    tmpfs           485115   480  484635    1% /run
    tmpfs           485115    16  485099    1% /sys/fs/cgroup
    tmpfs           485115     1  485114    1% /run/user/0

    -h选项,通过它可以产生可读的格式df命令的输出:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        59G   52G  4.6G  92% /
    devtmpfs        1.9G     0  1.9G   0% /dev
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    tmpfs           1.9G  676K  1.9G   1% /run
    tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
    tmpfs           379M     0  379M   0% /run/user/0

    Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。du 会显示指定的目录或文件所占用的磁盘空间。

    显示目录或者文件所占空间:

    [root@bogon194 shell]# du
    4       ./test
    32      .

    只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的32为当前目录的总大小

    显示指定文件所占空间:

     du log2012.log 

    方便阅读的格式显示test目录所占空间情况:

    [root@bogon194 shell]# du -h
    4.0K    ./test
    32K     .

    3.5 查看网卡信息

    ifconfig:查看/配置计算机当前的网卡配置信息

    [root@longmax2002 yuncang]# ifconfig
    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet xxx.xx.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
            ether 02:42:e7:7c:76:74  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet xxx.xx.xxx.47  netmask 255.255.240.0  broadcast xxx.xx.xxx.255
            ether 00:16:3e:08:09:35  txqueuelen 1000  (Ethernet)
            RX packets 32758819  bytes 10010046741 (9.3 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 27094266  bytes 8748881502 (8.1 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 260063355  bytes 71415552425 (66.5 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 260063355  bytes 71415552425 (66.5 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    提示:一台计算机中有可能会有一个物理网卡和多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensX、ethx表示
    127.0.0.1 被称为本地回环/环回地址,一般用来测试本机网卡是否正常。

    ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢。

    # 检测到目标主机是否连接正常
    $ ping IP地址
    # 检测本地网卡工作正常
    $ ping 127.0.0.1

    3.6 netstat

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

    常见参数:

     

    • -a (all)显示所有选项,默认不显示LISTEN相关;
    • -t (tcp)仅显示tcp相关选项;
    • -u (udp)仅显示udp相关选项;
    • -n 拒绝显示别名,能显示数字的全部转化成数字;
    • -l 仅列出有在 Listen (监听) 的服務状态;
    • -p 显示建立相关链接的程序名;
    • -r 显示路由信息,路由表;
    • -e 显示扩展信息,例如uid等;
    • -s 按各个协议进行统计;
    • -c 每隔一个固定时间,执行该netstat命令。

    提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到.。

    列出所有端口 (包括监听和未监听的):

    [root@bogon194 ~]# netstat -a | more
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:afs3-fileserver 0.0.0.0:*               LISTEN
    tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
    tcp        0      0 bogon194:41320          10.64.200.219:29010     TIME_WAIT
    tcp        0      0 bogon194:42544          10.64.200.219:29010     TIME_WAIT
    tcp        0      0 bogon194:60106          10.64.200.219:29010     TIME_WAIT

     列出所有 tcp 端口 netstat -at:

    [root@bogon194 ~]# netstat -at | more
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:afs3-fileserver 0.0.0.0:*               LISTEN
    tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
    tcp        0      0 bogon194:41320          10.64.200.219:29010     TIME_WAIT
    tcp        0      0 bogon194:42544          10.64.200.219:29010     TIME_WAIT
    tcp        0      0 bogon194:57808          10.64.200.219:29010     TIME_WAIT

    列出所有 udp 端口 netstat -au:

    [root@bogon194 ~]# netstat -au | more

    列出所有监听 tcp 端口:

    [root@bogon194 ~]# netstat -lt | more
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:afs3-fileserver 0.0.0.0:*               LISTEN
    tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
    tcp6       0      0 [::]:6379               [::]:*                  LISTEN
    tcp6       0      0 [::]:6540               [::]:*                  LISTEN

    四、用户权限相关命令

    4.1 组管理

    普通用戶创建组 / 删除组 的终端命令都需要通过 sudo 执行:

    命令作用
    groupadd 组名 添加组
    groupdel 组名 删除组
    cat /etc/group 确认组信息
    chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

    组信息保存在 /etc/group 文件中,/etc 目录是专门用来保存 系统配置信息 的目录。

    4.2 用户管理

    普通用戶创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行。

    命令作用
    user -m -g add 组名 新建用戶名

    添加新用戶

    -m 自動建立用戶home路徑

    -g 指定用戶所在的組,否則會新建一個同名的組

    passwd 用戶名

    設置用戶密碼

    如果是普通用戶,直接用passwd可以修改自己的账号密码

    userdel -r 用户名

    删除用户

    -r 自动删除用户home路径

    cat /etc/passwd | grep 用户名

    确认用户信息

    新建用户后,用户信息会保存在/etc/passwd文件中

    4.3 查看用户信息

    id [用户名]:查看用户 UID 和 GID 信息。

    [root@longmax2002 yuncang]# id root
    uid=0(root) gid=0(root) groups=0(root)

    who:查看当前所有登录的用户列表;

    [root@longmax2002 yuncang]# who
    root     pts/1        2021-09-29 13:12 (xxx.xxx.xxxx.xx)

    whoami:查看当前登录用户的账户名。

    [root@longmax2002 yuncang]# whoami
    root

    4.4 which

    which 命令可以查看执行命令所在位置,例如:

    which ls
    # 输出
    # /bin/ls
    which useradd
    # 输出
    # /usr/sbin/useradd

    4.5 切换用户

    su -用户名:切换用户,并且切换目录;

    exit: 退出当前登录用户。

    4.6 修改文件权限

    chown:修改拥有者;

    chgrp:修改组;

    chmod:修改权限。

    # 修改文件|目录的拥有者
    chown 用户名 文件名|目录名
    # 递归修改文件|目录的组
    chgrp -R 组名 文件名|目录名
    # 递归修改文件权限
    chmod -R 755 文件名|目录名

    五、远程管理相关命令

    5.1 关机/重启

    shutdown:关机/重新启动。

    # 重新启动操作系统,其中 now 表示现在
    $ shutdown -r now
    # 立刻关机,其中 now 表示现在
    $ shutdown now
    # 系统在今天的 20:25 会关机
    $ shutdown 20:25
    # 系统再过十分钟后自动关机
    $ shutdown +10
    # 取消之前指定的关机计划
    $ shutdown -c

    5.2 ssh命令

    在 Linux 中 SSH 是 非常常用 的工具,通过 SSH 客户端 我们可以连接到运行了SSH服务器 的远程机器上。

    ssh的简单使用:

    ssh [-p port] user@remote
    • user 是在远程机器上的用户名,如果不指定的话默认为当前用户;
    • remote 是远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名;
    • port 是 SSH Server 监听的端口,如果不指定,就为默认值 22;

    5.3 scp命令

    scp 就是 secure copy ,是一个在 Linux 下用来进行 远程拷贝文件 的命令,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的。

    # 把本地当前目录下的 01.py 文件 复制到远程目录下的 Desktop/01.py
    # 注意:`:` 后面的路径如果不是绝对路径,则以用户的Home目录作为参照路径
    scp -P port 01.py user@remote:Desktop/01.py
    # 把远程目录下的Desktop/01.py 文件 复制到本地当前目录下的 01.py
    scp -P port user@remote:Desktop/01.py 01.py
    # 加上 -r 选项可以传送文件夹
    # 把当前目录下的demo文件夹 复制到远程目录Desktop
    scp -r demo user@remote:Desktop
    # 把远程目录Desktop下的文件复制到当前目录下的demo文件夹
    scp -r user@remote:Desktop demo
    选 项含义
    -r 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
    -P 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口

    六、简单案例

    6.1 通过端口停止一个spring boot web进程

    #!/bin/bash
    port=30999
    #根据端口号查找对应的pid
    pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
    
    #杀掉对应的进程(如果pid长度不为0)
    if [  -n  "$pid"  ];  then
        echo $pid;
        kill  -9  $pid;
    fi

    首先利用netstat -nlp,列出所有监听端口,然后通过grep :$port过滤满足的行数据。利用awk '{print $7}'输出文本第7项:

    最后利用awk -F,对字符串按照'/'拆分,并获取得到pid。

    6.2 start/stop/restart服务脚本

    #! /bin/bash
    
    # 获取工作路径
    WORKSPACE=`cd "$(dirname "$0")"/ || exist; pwd`
    cd $WORKSPACE
    
    # 创建临时目录
    mkdir -p var
    
    # 软件信息
    module=ngsp
    app=$module-cmc
    pid_file=var/app.pid
    log_file=var/app.log
    
    
    # 从pid文件获取进程pid
    function check_pid() {
        if [ -f $pid_file ];then
            pid=`cat $pid_file`
            if [[ -n $pid ]]; then           
                return `pgrep -f $app | grep -cv "PID TTY"`
            fi
        fi
        return 0
    }
    
    
    # 启动服务
    function start() {
        check_pid
        # 获取进程pid
        pid=$?
        if [ $pid -gt 0 ];then
            echo -n "$app now is running already, pid="
            echo $pid_file
            return 1
        fi
    
       # 启动进程命令
        nohup ./$app web &> $log_file &
        sleep 1
        pid=`pgrep -f $app | grep -cv "PID TTY"`
        if [ $pid -gt 0 ];then
            echo $! > $pid_file
            echo "$app started..., pid=$!"
        else
            echo "$app failed to start."
            return 1
        fi
    }
    
    
    # 停止服务
    function stop() {
        pgrep -f $app | xargs kill -9
        rm -f $pid_file
        echo "$app stopped..."
    }
    
    
    # 重启服务
    function restart() {
        stop
        sleep 1
        start
    }
    
    # 获取进程状态
    function status() {
        check_pid
        pid=$?
        if [ $pid -gt 0 ];then
            echo started
        else
            echo stoped
        fi
    }
    
    # 帮助
    function help() {
        echo "$0 start|stop|restart|status"
    }
    
    if [ "$1" == "" ]; then
        help
    elif [ "$1" == "stop" ];then
        stop
    elif [ "$1" == "start" ];then
        start
    elif [ "$1" == "restart" ];then
        restart
    elif [ "$1" == "status" ];then
        status
    else
        help
    fi

    参考文章

    [1]史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!

  • 相关阅读:
    MyCat分库分表-安装
    oracle 字符串格式转化 与 今天 /本周 /本月 查询
    java 接口开发时 后台无法获取前端传过来的参数值
    orace 异常 ORA-01830: 日期格式图片在转换整个输入字符串之前结束
    java json数据返回值中文乱码 出现???
    特殊的日子 2018年总结(一个人的胡言乱语)
    写在2016年的第365天,记录我的2016
    app mui框架 安卓手机app禁止截屏
    oracle 查询函数wm_concat,decode,COALESCE
    后台获取select的值,给页面添加默认值 【js】待续...
  • 原文地址:https://www.cnblogs.com/zyly/p/15351659.html
Copyright © 2020-2023  润新知