yum 安装常用命令

1
[root@centos8 ~]# yum -y install vim tree net-tools wget curl lrzsz
  • lrzsz支持xshell和SecureCRT上传下载 rz命令本地上传文件到服务器,sz命令发送文件到本地

终端工具的使用

  • open in Terminal:打开终端

  • Linux以回车键表示命令结束,如果linux命令需要折行输入,那么可以以\表示每行结束

    1
    2
    3
    4
    5
    # [用户名@主机名称 当前位置] # 代表管理员 $ 普通用户
    [hadoop@hadoop ~]$ su root
    Password:
    [root@hadoop hadoop]#
    # 这个命令提示符是可以改变的。通过PS1系统变量改变,比如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 先查看PS1变量的结果值:
    [hadoop@hadoop01 mazhonghua]$ echo $PS1
    [\u@\h \W]\$
    # \u:用户名,\h:主机名,\w:工作目录,\$:用户表示,root是$,普通用户是#
    # 然后更改该值:
    [hadoop@hadoop01 mazhonghua]$ PS1="[\t][\u@\h \W]\$ "
    # 这是Linux定义变量的方式
    #接下来命令提示符就会变成:
    [11:48:45][hadoop@hadoop01 mazhonghua]$

命令的格式

  1. 选项 :
    • -简写单词(短模式)
    • --单词 (长模式)
    • 也可以使用组合格式,比如:-a -l 等价于-la或者-al

常用命令归纳分类

  • http://man.linuxde.net/

  • Linux常用命令全集-脚本之家 (jb51.net)

  • Linux命令搜索引擎 命令

    分类 命令
    文件管理 mkdir, rmdir, mv, rm, cp, touch, cat, tac, echo, more, less, head, tail, file, find, rename, ln, pwd, scp, alias
    磁盘管理 ls, cd, du, df, mount, unmounts, fdisk
    文档处理 wc, sort, uniq, cut, sed, awk, grep, vi, diff
    用户和组 useradd, usermod, passwd, userdel, groupadd, groupdel, chgrp, su
    文件传输 get, put, wget
    网络通信 telnet, nc, ifconfig, ping, netstat, ip, host
    备份压缩 gzip, bzip2, bunzip2, tar, zip
    系统管理 exit, kill, last, ps, top, free, pstree, reboot, halt, shutdown, sudo, who, w, whoami, whereis, which, last, whatis
    系统设置 clear, set, unset, hwclock, time, date,
    其他 history, hostname, nohup, service, init, rpm, ssh, cal, yum
  • 另外再教大家一种方式查看命令的帮助手册

    1
    [root@hadoop01 ~]# man clear

cd 路径

  • 配合 pwd(查看当前路径) 使用

    1
    2
    3
    4
    5
    6
    change directory (切换目录)	常使用方式:
    cd sourcedir 进入用户主目录
    cd ~ 进入用户主目录
    cd - 返回进入此目录之前所在的目录
    cd .. 返回上级目录(若当前目录为"/",则执行完后还在"/"".."为上级目录的意思)
    cd ../.. 返回上两级目录

ls

  • list:显示目录内容列表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    使用格式:ls  [选项]...  [目录或文件名]

    常用选项
    -l:详细信息显示
    -a:显示所有子目录和文件的信息,包括隐藏文件
    -A:类似于“-a”,但不显示“.”和“..”目录的信息
    -R:递归显示内容
    -h:以友好方式显示文件大小

    例子:
    ls -l ## 列出文件详细信息, 也可以写作 ll
    ls -lah ## 以友好方式显示包括隐藏文件的详细信息

du

  • 查看目录和文件的磁盘占用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    disk usage:显示每个文件和目录的磁盘使用空间	使用格式:du  [选项]...  [目录或文件名]

    常用选项:
    -a:统计时包括所有的文件,而不仅仅只统计目录
    -h:以更易读的字节单位(K、M等)显示信息
    -s:只统计每个参数所占用空间总的大小

    例子:
    du -ah ##

df

  • 显示磁盘相关信息

    1
    2
    3
    4
    5
    6
    7
    disk free:显示磁盘相关信息	常用选项:
    -h:以更易读的字节单位(K、M等)显示信息
    -T:显示分区格式

    例子:
    df -h ## 显示磁盘信息,以友好方式
    df -T -h ## 以友好格式显示磁盘信息,并且附加磁盘格式

touch

  • 创建/修改文件信息

    1
    2
    3
    创建空文件
    或更新文件时间标记 使用格式:
    touch 文件名

file

  • 查看文件类型:根据文件内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ## 创建文件
    [root@hadoop hadoop]# touch aa
    [root@hadoop hadoop]# file aa
    aa: empty

    ## 查看目录
    [root@hadoop hadoop]# file apps
    apps: directory

    ## 创建脚本文件
    [root@hadoop hadoop]# touch a.sh
    [root@hadoop hadoop]# file a.sh
    a.sh: empty

    ## 添加 #!/bin/bash 后
    [root@hadoop hadoop]# vim a.sh
    [root@hadoop hadoop]# file a.sh
    a.sh: Bourne-Again shell script, ASCII text executable

mkdir

  • 创建文件夹
    • -p 级联创建 ,父级目录不存在也创建
    • mkdir -p /root/ma/niu/zhu/dagou ## 上级目录不存在自动创建上一级目录,常用

cp

  • 复制

    • -i 需要覆盖文件或目录时进行提醒

    • -r 文件夹复制时要迭代

    • -p 源文件的属性不变

    • cp 源文件路径 目标文件路径

    • cp 源文件路径 目标文件路径/新的名字

mv

  • 剪切,如果与源文件位置一样,则相当于重命名
    • -i 覆盖时提示
    • -f 强制覆盖,不询问
    • -u: 新文件覆盖旧文件

rmdir

  • 删除空目录

    1
    2
    3
    4
    删除空文件夹	常用选项:
    -p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
    rmdir -p /root/aa/bb/cc/dd/ee
    删除文件夹ee,如果删除ee后,dd变为空,则删除dd,依次类推

rm

  • 删除文件和文件夹

    1
    2
    3
    4
    5
    6
    7
    8
    9
    删除文件或目录	使用格式:rm  [选项]  文件或目录

    常用选项:
    -f:强行删除文件或目录,不进行提醒
    -i:删除文件或目录时提醒用户确认
    -r:递归删除整个目录树

    例子:
    rm -rf /root/ma/ ## 不提醒递归删除整个目录,慎用慎用慎用

cat

  • 查看文件,连接文件打印到控制台(不适合大文件,缓冲区有限)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # 默认不显示行号
    [root@hadoop hadoop]# cat a.sh
    #!/bin/bash

    # -n: 设置行号 :空行算一行
    [root@hadoop hadoop]# cat -n a.sh
    1 #!/bin/bash
    2 a
    3 b
    4

    # 使用nl 空行不算一行
    [root@hadoop hadoop]# nl a.sh
    1 #!/bin/bash
    2 a
    3 b

    # 使用tac(cat倒置):倒置输出
    [root@hadoop hadoop]# tac a.sh

    b
    a
    #!/bin/bash

    • 通过cat添加文本到文件末尾.cat << EOF

      • 覆盖 > 文件名
      • 追加 >> 文件名
      • 最后以EOF结尾
      • 需要注意的是,不论是覆盖还是追加,在涉及到变量操作时是需要进行转义的
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      # 覆盖 格式一 将文件放在后面
      #!/bin/bash
      cat << EOF > /root/test.txt
      Hello!
      Test for cat and EOF!
      EOF

      # 格式二 将文件放在中间
      #!/bin/bash
      cat > /root/test.txt << EOF
      Hello!
      Test for cat and EOF!
      EOF
  • 屏幕显示文件开头若干行
    • -n<数字>:指定显示头部内容的行数;
    • head -n 5 install.log ## 显示该文件前五行内容

tail

  • 显示结尾若干行,查日志

    • -n: 设置行数(默认10行)

      tail -n 2 a.sh: 显示a.sh的最后二行

    • -f: 查看最新追加的内容

      tail -f a.sh使用另外终端向a.sh写入后可看到追加内容\

      1
      2
      3
      4
      5
      例子:
      tail file ## 显示文件file的最后10行
      tail +20 file ## 显示文件file的内容,从第20行至文件末尾
      tail -c 10 file ## 显示文件file的最后10个字符
      tail -f install.log ## 显示最新追加的内容

more

  • 翻页查看文件

    1
    2
    3
    4
    5
    6
    显示文件内容,每次显示一屏	使用方式:
    按Space键:显示文本的下一屏内容。
    按Enter键:只显示文本的下一行内容。
    按h键:显示帮助屏,该屏上有相关的帮助信息。
    按b键:显示上一屏内容。
    按q键:退出more命令。

less

  • 分屏滚动显示
    • G:跳到结尾
    • gg:跳到开始
    • 按e键:向上滚动一行
    • 按y键:向下滚动一行
    • q:退出

echo

  • 输出指定的字符串和变量

    • -e: 能识别特殊字符

    • -ne:输出不换行;最后是不换行的

      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
      输出指定的字符串或者变量	常用选项:
      -e:若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
      \a 发出警告声;
      \b 删除前一个字符;
      \c 最后不加上换行符号;
      \f 换行但光标仍旧停留在原来的位置;
      \n 换行且光标移至行首;
      \r 光标移至行首,但不换行;
      \t 插入tab;
      \v 与\f相同;
      \ 插入\字符;
      \nnn 插入nnn(八进制)所代表的ASCII字符;

      例子:
      echo 'ma' ## 输出ma
      echo -e 'ma\n' ## 打印ma之后换行
      echo -ne 'ma' 'zhonghua' ## 打印完不换行

      echo 'ma' > ma.dat ## 覆盖
      echo 'ma' >> ma.dat ## 追加
      echo $PWD ## 输出变量内容

      [root@hadoop hadoop]# A=12
      [root@hadoop hadoop]# echo $A
      12

      # 默认原样输出
      [root@hadoop hadoop]# echo "aa\nbb"
      aa\nbb


      ## -e 能识别特殊字符:换行了
      [root@hadoop hadoop]# echo -e "aa\nbb"
      aa
      bb
      [root@hadoop hadoop]#

      ## 没有换行
      [root@hadoop hadoop]# echo -ne "aa\nbb"
      aa
      bb[root@hadoop hadoop]#

>

  • 重定向 ,覆盖添加

    • >>追加
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [root@hadoop hadoop]# echo 'aaa' > a.txt
    [root@hadoop hadoop]# cat a.txt
    aaa

    ## 在文本后追加
    [root@hadoop hadoop]# cal >> a.txt
    [root@hadoop hadoop]# cat a.txt
    aaa
    August 2020
    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 31

alias

  • 别名

    1
    2
    3
    4
    5
    > alias:查看别名

    > alias la ='ll -a'  : 设置别名

    > unalias ls :取消别名

ln

  • 设置连接

    -s 创建软链接(如果不带 -s 参数,默认创建硬链接)
    -f 强制创建文件或目录的链接
    -i 覆盖前先询问
    -v 显示创建链接的过程
    • 在 Linux 系统中 , 系统中有一个名为 superblock 的 “硬盘地图”。每个文件的权限与属性记录在 inode(“索引节点:index node “) 中,而且每个文件占用一个独立的 inode 表格,该表格的默认大小为 128 字节。

    • inode 号才是文件的唯一标识而非文件名。文件名只是为了方便人们的记忆和适用。

    • “ls -li” 结果中的第一列就是文件的 inode 号。系统是通过 inode 号寻找正确的文件数据块。

      1
      2
      3
      4
      5
      6
      7
      [root@hadoop hadoop]# ls -li
      total 16
      1707903 -rw-r--r-- 1 root root 0 Aug 13 09:59 aa
      1707725 drwxrwxr-x 4 hadoop hadoop 4096 Jul 15 20:31 apps
      1707905 -rw-r--r-- 1 root root 17 Aug 13 10:07 a.sh
      1707904 -rw-r--r-- 1 root root 157 Aug 13 10:20 a.txt

    • 文件的实际内容则保存在 block 中(大小可以是 1KB、2KB 或 4KB),一个 inode 的默认大小为 128B (在 Ext3 文件系统中),记录一个 block 则消耗 4B 。当文件的 inode 被写满后,Linux 系统会自动分配出一个 Block 块,专门用于像 innode 那样记录其他 block 块的信息,这样能把各个 block 块的内容串到一起,就能够让用户读到完整的文件内容了。

    • 硬链接: ln fileName newFileName

    • fileName 和 newFileName 都指向同一个文件,因此,无论你编辑哪一个文件,另一个文件也会做相应的改变。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      [root@hadoop hadoop]# ls -li
      total 16
      1707903 -rw-r--r-- 1 root root 0 Aug 13 09:59 aa

      ## 添加硬链接 硬链接是一个指针或者说是文件的引用。只占一点点空间。
      [root@hadoop hadoop]# ln aa bb

      ## 可以看到该文件的 innode 连接数就会增加 1 ;
      ## 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除
      [root@hadoop hadoop]# ls -l
      total 16
      -rw-r--r-- 2 root root 0 Aug 13 09:59 aa

    • 软链接:快捷方式
      -s : 设置软连接

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      [root@hadoop hadoop]# ln -s a.txt b.txt
      # innode没有添加
      [root@hadoop hadoop]# ll
      total 16
      -rw-r--r-- 1 root root 157 Aug 13 10:20 a.txt
      lrwxrwxrwx 1 root root 5 Aug 13 10:32 b.txt -> a.txt
      # 删除软链接,但不删除实际数据
      # 删除原始文件后 ,这条记录变红
      # 测试vim编辑快捷方式后,删除的文件会被重新创建
      [root@hadoop hadoop]# rm a.txt
      1707906 lrwxrwxrwx 1 root root 5 Aug 13 10:33 b.txt -> a.txt

其他

  • su 切换用户

  • Ctrl+ C 终止程序

  • | :管道符,表示把前面命令内容的输出当做后面命令的输入

    • ps -aux | grep ssh
  • host :域名解析

    • host www.bai.du.com
  • netstat :查看网络接口

    • netstat -nltp
    • kill -9 pid

用户管理

  • 用户:能够获取系统权限集合

  • 组:权限的容器

1
2
3
4
5
6
7
8
9
10
11
> ls -l
-rw-r--r--. 1 root root    13 Sep 14 09:43 a.txt
drwxr-xr-x. 2 root root  4096 Sep 14 10:09 Desktop

-rw-r--r-- :权限  
1: 链接数(文件链接数1 目录:子目录个数)
root :所属用户
root: 所属用户组
13: 文件大小
Sep 14 10:09:修改日期
a.txt 文件名称

用户类型

  • 管理员root

    • 具有使用所有权限的用户,uid为0
  • 系统用户

    • 保障系统运行的用户,一般不提供密码登录系统uid(1-499之间)
  • 普通用户

    • 一般用户,使用系统的权限受限,uid(500~60000之间)

查看用户信息

  • cat /etc/passwd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    root:x:0:0:root:/root:/bin/bash

    # root: 用户名称
    # x: 密码的占位符 密码信息:/etc/gshadow
    # 0: 用户id
    # 0: 用户组id
    # root: 备注信息
    # /root 家目录
    # /bin/bash: shell 解释器类型

    # 新建从500开始:
    # hdp01:x:500:500:hdp01:/home/hdp01:/bin/bash

添加用户

1
2
3
4
5
6
7
8
格式:格式:useradd [options] LOGIN
-u UID UserName:创建用户时指定用户UID;不能和现有的UID冲突
-g GID/GroupName UserName:创建用户时指定用户默认主组;前提必需是指定的组已存在,否则无法指定。
-c “注释” UserName:创建用户时指定用户信息注释
-d /PATH//HomeDirName UserName: 创建用户时指定目录为其家目录
-M UserName:创建用户时不创建家目录;文件(/etc/passwd)中只是标记家目录属性但实际并不会创建家目录文件
-s SHELL UserName:创建用户时指定用户的默认登录Shell类型;Shell类型可用命令(cat /etc/shells)查看(如Shell类型为/sbin/nologin为用户不可登录)
-G GroupName UserName:创建用户时指定用户附加组;多组时组与组之间用逗号分隔,前提必需是指定的组已存在,否则无法指定。
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 不加任何选项创建用户时根据系统版本默认用户起始UID为第一个或已创建用户UID之后为准以此递增
[root@localhost ~]# useradd user1
[root@localhost ~]# tail -1 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash

# -u UID UserName:创建用户时指定用户UID;不能和现有的UID冲突
[root@localhost ~]# useradd -u 1002 user2
[root@localhost ~]# tail -2 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

# -g GID/GroupName UserName:创建用户时指定用户默认主组;
#前提必需是指定的组已存在,否则无法指定。
[root@localhost ~]# useradd -g 1000 user3
[root@localhost ~]# tail -3 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash

# -c “注释” UserName:创建用户时指定用户信息注释
[root@localhost ~]# useradd -c 'Test User' user4
[root@localhost ~]# tail -4 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash

# -d /PATH//HomeDirName UserName: 创建用户时指定目录为其家目录
[root@localhost ~]# useradd -d /home/testhome user5
[root@localhost ~]# tail -5 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash
user5:x:1005:1005::/home/testhome:/bin/bash
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user5 user5 62 Jul 17 16:28 testhome
drwx------ 2 user1 user1 62 Jul 17 15:54 user1
drwx------ 2 user2 user2 62 Jul 17 15:54 user2
drwx------ 2 user3 user1 62 Jul 17 16:01 user3
drwx------ 2 user4 user4 62 Jul 17 16:04 user4

# -M UserName:创建用户时不创建家目录;文件(/etc/passwd)中只是标记家目录属性但实际并不会创建家目录文件
[root@localhost ~]# useradd -M user6
[root@localhost ~]# tail -6 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash
user5:x:1005:1005::/home/testhome:/bin/bash
user6:x:1006:1006::/home/user6:/bin/bash
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user5 user5 62 Jul 17 16:28 testhome
drwx------ 2 user1 user1 62 Jul 17 15:54 user1
drwx------ 2 user2 user2 62 Jul 17 15:54 user2
drwx------ 2 user3 user1 62 Jul 17 16:01 user3
drwx------ 2 user4 user4 62 Jul 17 16:04 user4

# -s SHELL UserName:创建用户时指定用户的默认登录Shell类型;Shell类型可用命令(cat /etc/shells)查看(如Shell类型为/sbin/nologin为用户不可登录)
[root@localhost ~]# useradd -s /sbin/nologin user7
[root@localhost ~]# tail -7 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash
user5:x:1005:1005::/home/testhome:/bin/bash
user6:x:1006:1006::/home/user6:/bin/bash
user7:x:1007:1007::/home/user7:/sbin/nologin

# -G GroupName UserName:创建用户时指定用户附加组;多组时组与组之间用逗号分隔,
# 前提必需是指定的组已存在,否则无法指定。
[root@localhost ~]# useradd -G root user8
[root@localhost ~]# tail -8 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash
user5:x:1005:1005::/home/testhome:/bin/bash
user6:x:1006:1006::/home/user6:/bin/bash
user7:x:1007:1007::/home/user7:/sbin/nologin
user8:x:1008:1008::/home/user8:/bin/bash
[root@localhost ~]# head -1 /etc/group
root:x:0:user8

# 多参数组合实例:
[root@localhost ~]# useradd -u 10010 -g 1005 -c 'Test User2' -d /home/testhome2 -s /sbin/nologin -G root user9
[root@localhost ~]# tail -9 /etc/passwd
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1000::/home/user3:/bin/bash
user4:x:1004:1004:Test User:/home/user4:/bin/bash
user5:x:1005:1005::/home/testhome:/bin/bash
user6:x:1006:1006::/home/user6:/bin/bash
user7:x:1007:1007::/home/user7:/sbin/nologin
user8:x:1008:1008::/home/user8:/bin/bash
user9:x:10010:1005:Test User2:/home/testhome2:/sbin/nologin
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user5 user5 62 Jul 17 16:28 testhome
drwx------ 2 user9 user5 62 Jul 17 16:44 testhome2
drwx------ 2 user1 user1 62 Jul 17 15:54 user1
drwx------ 2 user2 user2 62 Jul 17 15:54 user2
drwx------ 2 user3 user1 62 Jul 17 16:01 user3
drwx------ 2 user4 user4 62 Jul 17 16:04 user4
drwx------ 2 user7 user7 62 Jul 17 16:33 user7
drwx------ 2 user8 user8 62 Jul 17 16:36 user8
[root@localhost ~]# head -1 /etc/group
root:x:0:user8,user9

修改用户

  • usermod [选项] 用户名

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    -g:      修改用户所属群组。
    -G: 修改用户所属的附加群组;在改变用户sudo权限时就可以使用这个选项。
    -a: 仅和-G一块使用,将用户添加到附属组群。
    -c 修改信息

    # -u UID UserName:修改用户UID;不能和现有的UID冲突
    [root@localhost ~]# id -u user3
    1011
    [root@localhost ~]# usermod -u 1012 user3
    [root@localhost ~]# id -u user3
    1012

    # -g GID/GroupName UserName:修改用户默认主组;前提必需是指定的组已存在,否则无法指定
    [root@localhost ~]# id -g user3
    1011
    [root@localhost ~]# usermod -g 1012 user3
    [root@localhost ~]# id -g user3
    1012

    # -c “注释” UserName:修改用户信息注释(备注)
    [root@localhost ~]# tail -1 /etc/passwd
    user3:x:1012:1012:testuser:/home/user3:/bin/bash
    [root@localhost ~]# usermod -c "testuser2" user3
    [root@localhost ~]# tail -1 /etc/passwd
    user3:x:1012:1012:testuser2:/home/user3:/bin/bash


    # -d /HomeDirName UserName: 修改用户新家目录;
    # 默认新家目录不会被创建,老家目录不会迁移至新家目录。
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2:/bin/bash
    [root@localhost ~]# usermod -d /home/user2home1 user2
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2home1:/bin/bash
    [root@localhost ~]# ll /home/
    total 0
    drwx------ 2 user2 user2 83 Jul 17 20:59 user2


    # -md /HomeDirName UserName: 修改用户新家目录
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2:/bin/bash
    [root@localhost ~]# usermod -md /home/user2home2 user2
    [root@localhost ~]# ll /home/
    total 0
    drwx------ 2 user2 user2 83 Jul 17 20:59 user2home2

    # -s SHELL UserName:修改用户的默认登录Shell类型;
    # Shell类型可用命令(cat /etc/shells)查看
    # (如Shell类型为/sbin/nologin为用户不可登录)
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2home2:/bin/bash
    [root@localhost ~]# usermod -s /sbin/nologin user2
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2home2:/sbin/nologin

    # -G GroupName UserName:修改(覆盖)用户附加组;
    # 多组时组与组之间用逗号分隔,前提必需是指定的组已存在,否则无法指定。
    [root@localhost ~]# id user3
    uid=1012(user3) gid=1012(user4) groups=1012(user4),1013(testgp1)
    [root@localhost ~]# usermod -G testgp2 user3
    [root@localhost ~]# id user3
    uid=1012(user3) gid=1012(user4) groups=1012(user4),1014(testgp2)

    #aG GroupName UserName:修改(追加)用户附加组;
    # 多组时组与组之间用逗号分隔,前提必需是指定的组已存在,否则无法指定。
    [root@localhost ~]# id user3
    uid=1012(user3) gid=1012(user4) groups=1012(user4),1014(testgp2)
    [root@localhost ~]# usermod -aG testgp1 user3
    [root@localhost ~]# id user3
    uid=1012(user3) gid=1012(user4) groups=1012(user4),1013(testgp1),1014(testgp2)

    #-l NewUserName OldUserName:修改新登录用户名;
    # 默认用户家目录属性不变更沿用老用户名的家目录
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user2:x:1001:1002::/home/user2home2:/sbin/nologin
    [root@localhost ~]# usermod -l user3 user2
    [root@localhost ~]# tail -2 /etc/passwd
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    user3:x:1001:1002::/home/user2home2:/sbin/nologin

    # -L UserName:锁定指定用户;
    # 实际就是在文件(/etc/shadow)密码位首位添加个叹号(!)
    [root@localhost ~]# usermod -L user3
    [root@localhost ~]# tail -2 /etc/shadow
    chrony:!!:17911::::::
    user3:!$6$i730d3Eq$6EQFStDoK2wj3sfbJJ3MFcA6eO9YAxWbkP81.hOE4lnRLejdm5rsPNiTyeqRZy36gsTFPXB/cOYeLBTKVL9JD0:18094:0:99999:7:::

    # -U UserName:解锁指定用户;
    # 实际就是在文件(/etc/shadow)密码位首位删除个叹号(!)
    [root@localhost ~]# usermod -U user3
    [root@localhost ~]# tail -2 /etc/shadow
    chrony:!!:17911::::::
    user3:$6$i730d3Eq$6EQFStDoK2wj3sfbJJ3MFcA6eO9YAxWbkP81.hOE4lnRLejdm5rsPNiTyeqRZy36gsTFPXB/cOYeLBTKVL9JD0:18094:0:99999:7:::

删除用户

格式:userdel [options] LOGIN

  • -r:删除用户时同时删除用户家目录和邮件目录
1
2
3
4
5
6
7
8
9
10
# 不加任何选项删除用户时只删除用户本身,
# 其家目录(/home/UserName)和邮箱目录(/var/spool/mail/UserName)不被删除。
[root@localhost ~]# userdel user1
[root@localhost ~]#
[root@localhost ~]# ll /home/
total 0
drwx------ 2 1000 1000 83 Jul 16 01:02 user1
[root@localhost ~]# ll /var/spool/mail/
total 0
-rw-rw---- 1 1000 mail 0 Jul 14 18:28 user1
1
2
3
4
5
6
7
8
9
10
-r:删除用户时同时删除用户家目录和邮件目录
[root@localhost ~]# userdel -r user1
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user2 user2 62 Jul 17 20:10 user2
drwx------ 2 user3 user3 62 Jul 17 20:10 user3
[root@localhost ~]# ll /var/spool/mail/
total 0
-rw-rw---- 1 user2 mail 0 Jul 17 20:10 user2
-rw-rw---- 1 user3 mail 0 Jul 17 20:10 user3

修改密码

1
2
3
4
5
6
7
8
9
10
格式:passwd [options] [username]
-S UserName:查询用户密码的密码状态;仅root用户可
-l UserName:锁定指定用户(其实就是在用户密码前添加两叹号!!);仅root用户可用
-u UserNmae:解锁指定用户(其实就是删除用户密码前添加的两叹号!!)
-n N UserName:N为数字;指定密码最小使用天数(密码使用最小多少天才可更改密码);如为0则表示无限制(禁用此功能)
-x N UserName:N为数字;指定密码最大使用天数(密码使用最大多少天需要更改密码);默认为99999永不过期
-w N UserName:N为数字;指定密码过期前警告天数(密码过期前多少天警告用户更改密码);默认过期前7天警告
-i N UserName:N为数字;指定密码过期天数(密码过期后多少天用户被锁定);在此时间段内用户依然可以登录系统并更改密码
–stdin:非交互式修改密码(快速配置密码) #适合于CentOS系列

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#不指定用户名为设置(修改)当前登录用户密码
[root@localhost ~]# whoami
root
[root@localhost ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.

# 指定设置(修改)用户密码
[root@localhost ~]# passwd user1
Changing password for user user1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

#-S UserName:查询用户密码的密码状态;仅root用户可用
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 0 99999 7 -1 (Password set, SHA512 crypt.)
user1 PS 2017-03-04 0 99999 7 -1 (Password set, SHA512 crypt.)
格式:共八列,列与列之间用空格字符分隔
第一列:用户名
第二列:账户状态;PS为正常、LK为锁定
第三列:系统当前时间
第四列:密码最小使用天数(密码使用最小多少天才可更改密码);默认为0则表示无限制(禁用此功能)
第五列:密码最大使用天数(密码使用最大多少天需要更改密码);默认为99999永不过期
第六列:密码过期前警告天数(密码过期前多少天警告用户更改密码);默认过期前7天警告
第七列:密码过期天数(密码过期后多少天用户被锁定);在此时间段内用户依然可以登录系统并更改密码
第八列:密码配置状态及密码加密算法;Password locked表示密码已被锁定(账户密码未设置或账户已被锁定),Password set表示密码已设置,SHA512 crypt表示使用SHA512算法

#-l UserName:锁定指定用户(其实就是在用户密码前添加两叹号!!);仅root用户可
[root@localhost ~]# passwd -l user1
Locking password for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 LK 2017-03-04 0 99999 7 -1 (Password locked.)
[root@localhost ~]# grep user1 /etc/shadow
user1:!!$6$jxOh9OqV$57OBYLRy6/hfPtx1USHScB1L4ydHrsWmyt3elMcRfgb0s7FuxQgvYCIFPDecbjj6BmGb.7CkfB2cpDjtlrkdv/:18094:0:99999:7:::

#-u UserNmae:解锁指定用户(其实就是删除用户密码前添加的两叹号!!)
[root@localhost ~]# passwd -u user1
Unlocking password for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@localhost ~]# grep user1 /etc/shadow
user1:$6$jxOh9OqV$57OBYLRy6/hfPtx1USHScB1L4ydHrsWmyt3elMcRfgb0s7FuxQgvYCIFPDecbjj6BmGb.7CkfB2cpDjtlrkdv/:18094:0:99999:7:::

#-n N UserName:N为数字;指定密码最小使用天数(密码使用最小多少天才可更改密码);如为0则表示无限制(禁用此功能)
[root@localhost ~]# passwd -n 10 user1
Adjusting aging data for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 10 99999 7 -1 (Password set, SHA512 crypt.)

#-x N UserName:N为数字;指定密码最大使用天数(密码使用最大多少天需要更改密码);默认为99999永不过期
[root@localhost ~]# passwd -x 1000 user1
Adjusting aging data for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 10 1000 7 -1 (Password set, SHA512 crypt.)

#-w N UserName:N为数字;指定密码过期前警告天数(密码过期前多少天警告用户更改密码);默认过期前7天警告
[root@localhost ~]# passwd -w 15 user1
Adjusting aging data for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 10 1000 15 -1 (Password set, SHA512 crypt.)

# -i N UserName:N为数字;指定密码过期天数(密码过期后多少天用户被锁定);在此时间段内用户依然可以登录系统并更改密码
[root@localhost ~]# passwd -i 30 user1
Adjusting aging data for user user1.
passwd: Success
[root@localhost ~]# passwd -S user1
user1 PS 2017-03-04 10 1000 15 30 (Password set, SHA512 crypt.)

# –stdin:非交互式修改密码(快速配置密码) #适合于CentOS系列
[root@localhost ~]# passwd -S user2
user2 LK 2017-03-04 0 99999 7 -1 (Password locked.)
[root@localhost ~]# echo "123456"|passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -S user2
user2 PS 2017-03-04 0 99999 7 -1 (Password set, SHA512 crypt.)

用户组管理

  • 系统组

    • 一般加入一些系统用户
  • 普通用户组

    • 可以加入多个用户
  • 私有组/基本组

    • 创建用户的时候,没有指明所属的组,就为该用户设一个与用户名同名的私有组,该私有组添加了用户会变成普通组

查看用户组

1
2
3
4
格式:id [OPTION]… [USER]‘
-u:查看用户UID
-g:查看用户GID
-G:查看用户所有组(主组、附加组)的GID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 不加任何选项和指定用户为查看当前登录用户的ID信息
[root@localhost ~]# whoami
root
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1003(user3)
格式:共三列,列与列之间用空格字符分隔。
第一列:用户UID(用户名)
第二列:用户主组GID(主组名)
第三列:用户所有组集合
用户主组GID(主组名) #主组只有一个
用户附加组GID(附加组名) #附加组可以有多个

# -u:查看用户GID
[root@localhost ~]# id -u user2
1001

# -g:查看用户主组GID
[root@localhost ~]# id -g user2
1002

# -G:查看用户所有组(主组、附加组)的GID
[root@localhost ~]# id -G user2
1002 1003

修改用户组

格式:groupadd [options] group

  • -g GID GroupName:创建用户组时指定用户组GID;不能和现有的GID冲突

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [root@localhost ~]# groupadd user6
    [root@localhost ~]# tail -4 /etc/group
    user2:x:1002:
    user3:x:1003:
    user5:x:1005:
    user6:x:1006:

    [root@localhost ~]# groupadd -g 1008 user8
    [root@localhost ~]# tail -5 /etc/group
    user2:x:1002:
    user3:x:1003:
    user5:x:1005:
    user6:x:1006:
    user8:x:1008:

删除用户组

格式:groupdel [options] GROUP
说明:附加组可以直接删除;主组必须先把所属用户移除才可删除

1
2
3
4
5
6
7
8
9
10
# 附加组可以直接删除;主组必须先把所属用户移除才可删除
[root@localhost ~]#tail -2 /etc/group
user6:x:1006:
user8:x:1008:
[root@localhost ~]# groupdel user8
[root@localhost ~]# tail -2 /etc/group
user5:x:1005:
user6:x:1006:
[root@localhost ~]# groupdel user5
groupdel: cannot remove the primary group of user 'user5'

切换用户su

su [options…] [-] [user [args…]]

1
2
3
4
# 不加任何选项为非登录式切换,即不会读取目标用户的配置文件(环境变量);
# 生产环境此模式会有位置的问题,故此不推荐此方式。
root@localhost ~]# su user3
[user3@localhost root]
1
2
3
4
# – UserName:切换用户身份(环境变量同时切换);不加用户名默认切换至root用户
[root@localhost ~]# su - user3
Last login: Wed Jul 17 21:15:53 CST 2017 on pts/0
[user3@localhost ~]$ env
1
2
3
4
5
[user3@localhost ~]$ su -
Password:
Last login: Wed Jul 17 21:19:23 CST 2017 on pts/0
[root@localhost ~]# whoami
root

文件权限

  • d rwx r-x r-x (也可以用二进制表示 111 101 101 –> 755)

    • 数字 4 、2 和 1表示读、写、执行权限

    • d:标识节点类型(d:文件夹   -:文件  l:链接)

    • r:可读   w:可写    x:可执行

文件 文件夹
r 可读取内容 可以ls
w 可修改文件的内容 可以在其中创建或者删除子节点
x 能否运行这个文件 能否cd进入这个目录
  • u第一组rwx:表示这个文件的拥有者对它的权限:可读可写可执行

  • g第二组r-x: 表示这个文件的所属组用户对它的权限:可读,不可写,可执行

  • o第三组r-x: 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行

文件夹的执行权限

  1. 如果对文件夹有rw的权限:ls的时候,仅仅能知道目录下有文件,看不到详细信息
  2. 没有x权限:不能进入文件夹
  3. 有rwx权限的文件夹可以删除目录下的所有文件(没有对文件的权限也可以)

修改文件的权限

1
2
3
4
5
6
7
chmod g-rw haha.dat		## 表示将haha.dat对所属组的rw权限取消

chmod o-rw haha.dat ## 表示将haha.dat对其他人的rw权限取消

chmod u+x haha.dat ## 表示将haha.dat对所属用户的权限增加x

chmod a-x haha.dat      ## 表示将haha.dat对所用户取消x权限
命令 组类型 操作符 权限 组对应的用户
u +(加入) r/w/x 文件的拥有者
chmod g -(除去) r/w/x 所属组用户
o =(设定) r/w/x 其他用户
a 所用户

修改文件所有权

1
2
3
4
5
chown angela  mydata		## 改变所属用户

chown :angela  mydata ## 改变所属组

chown angela:angela mydata/ ## 同时修改所属用户和所属组

压缩和打包

z:gzip,通过gzip格式压缩或者解压缩

c:create,创建压缩文件

x:extract,解压缩文件,或者叫还原文件

v:verbose,显示过程

f:file,指定文件

t:list,列出文件

j:支持bzip2压缩和解压缩

  • gzip压缩 test.txt—> test.txt.gz,不会多出文件

    • gzip test.txt
  • gzip解压缩

    • gzip -d test.txt.gz
  • bzip2压缩: 压缩test.txt –> test.txt.bz2,不会多出文件

    • bzip2 test.txt
  • bzip2解压缩

    • bzip2 -d test.txt.bz2
    • 或者bunzip2 test.txt.bz2
  • 将test.txt 打包为test.txt.tar ,会多出一个test.txt.tar文件

    • tar -cvf test.txt.tar test.txt
  • 追加打包: 表示将test2.txt文件追加到test.txt.tar当中

    • tar -rvf test.txt.tar test2.txt
  • 打包并压缩 tar -zcvf ma.tar.gz /root/test

  • 解包 tar -xvf test.txt.tar

  • 解包并解压缩` tar -zxvf ma.tar.gz

  • 解包解压缩到指定的路径 tar -zxvf ma.tar.gz -C /test

  • 查看压缩包的内容 tar -ztvf ma.tar.gz

  • 打包并压缩为bz2 tar -jcvf test.tar.bz2

  • 解压: tar -jxvf test.bar.bz2

unzip

  • 把文件解压到当前目录下

    1
    unzip test.zip
  • 如果要把文件解压到指定的目录下,需要用到-d参数。

    1
    unzip -d /temp test.zip
  • 解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数

    1
    2
    unzip -n test.zip
    unzip -n -d /temp test.zip
  • 只看一下zip压缩包中包含哪些文件,不进行解压缩

    1
    unzip -l test.zip
  • 查看显示的文件列表还包含压缩比率

    1
    unzip -v test.zip
  • 检查zip文件是否损坏

    1
    unzip -t test.zip
  • 将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件

    1
    unzip -o test.zip -d /tmp/

进程

  • 进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。

  • 子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程

进程状态

  • 总体来看主要包括三种,分别是就绪状态、运行状态、等待状态
    • 就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,
    • 运行状态的进程在时间片用完后会重新转换成就绪状态,
    • 如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。

进程管理

  • ps命令:用于报告当前系统的进程状态。

    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
    ps 命令常用选项包括:
    1、a显示所有用户的进程
    2、u显示用户名和启动时间
    3、x显示所有进程,包括没有控制终端的进程
    4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
    5、l显示进程详细信息,按长格式显示

    ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息
    ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息
    ps -el 按长格式显示进程详细信息

    USER: 进程所有者
    PID: 进程号
    PPID: 进程的父进程ID
    %CPU: CPU占用率
    C: 进程的CPU占用率
    %MEM: 内存占用率
    VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
    RSS: 指明了当前实际占用了多少内存;
    TTY: 终端的次要装置号码 (minor device number of tty)
    F:进程的标志
    S:进程的状态
    STAT: 该进程程的状态,有以下值
    D: 不可中断的静止
    R: 正在执行中
    S: 静止状态
    T: 暂停执行
    Z: 不存在但暂时无法消除
    W: 没有足够的记忆体分页可分配
    <: 高优先序的进程
    N: 低优先序的进程
    L: 有记忆体分页分配并锁在记忆体内
    PRI:进程的优先权
    NI:进程的Nice值
    ADDR:进程的地址空间
    SZ:进程占用内存的大小
    WCHAN:进程当前是否在运行
    TTY:进程所属终端
    START: 进程开始时间
    TIME: 执行的运行时间
    COMMAND:所执行的指令
    CMD:进程的命令
  • PID

  • %CPU:  CPU占用率

  • C: 进程的CPU占用率

  • COMMAND:所执行的指令

kill/pidof/pkill命令

1
2
3
4
5
6
1、kill pid  直接杀死进程,但不能保证一定能杀死
2、kill -9 pid 强制杀死进程

3、pidof命令用于查看某个进程的进程号(例如:pidof mysqld)

4、pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉

进程切换

  • 前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;

  • 后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行

1
2
3
4
5
1、ctrl + c 终止进程
2、ctrl + z 挂起进程
3、fg命令将进程转换到前台执行
4、bg命令将进程转换到后台执行
5、jobs命令查看任务

top命令

  • Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,

  • 它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。

  • 它也会显示内存和 CPU 使用率过高的正在运行的进程。

  • 按q键退出查看

pstree命令

  • 将进程间的关系以树结构的形式展示,能清楚看各进程之间的父子关系

    pstree :以树状形式显示进程

  • pstree -p : 以树状形式显示进程,并且显示进程号

JPS命令

  • JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。

    不是linux系统自带的。主要任务就是用来检查java进程的。

最后

Linux命令参考:https://www.ityww.cn/linux/linux-command