Linux核心命令3-2Linux系统信息网络磁盘用户

Linux核心命令3-2Linux系统信息网络磁盘用户


Linux核心命令3-1系列文章核心命令简介
Linux核心命令3-2Linux系统信息网络磁盘用户

 

快速上手Linux核心命令(一):核心命令简介
快速上手Linux核心命令(二):关机、重启
快速上手Linux核心命令(三):文件和目录操作命令
快速上手Linux核心命令(四):文件内容相关命令
快速上手Linux核心命令(五):文本处理三剑客
快速上手Linux核心命令(六):Linux的文本编辑器vi和vim
快速上手Linux核心命令(七):Linux系统信息相关命令
快速上手Linux核心命令(八):网络相关命令
快速上手Linux核心命令(九):文件备份与压缩命令(博主正在玩命更新中)
快速上手Linux核心命令(十):软件安装命令(博主正在玩命更新中)
快速上手Linux核心命令(十一):Linux用户相关命令(博主正在玩命更新中)
快速上手Linux核心命令(十二):磁盘与文件系统相关命令(博主正在玩命更新中)
快速上手Linux核心命令(十三):进程相关命令(博主正在玩命更新中)
快速上手Linux核心命令(十四):系统管理相关命令(博主正在玩命更新中)


  • 快速上手Linux核心命令(六):Linux的文本编辑器vi和vim

     

    @

     

     

    快速上手Linux核心命令(七):Linux系统信息相关命令

     

     

     

    快速上手Linux核心命令(八):网络相关命令

     

     

     

    前言

    快速上手Linux核心命令(九):文件备份与压缩

     

     

     

    快速上手Linux核心命令(十):Linux安装软件

    目录

     

     

    Linux核心命令(十一):Linux用户相关命令

    前言

    Linux用户相关命令
    前言
    useradd 创建用户
    usermod 修改用户信息
    userdel 删除用户
    groupadd 创建新的用户组
    groupdel 删除用户组
    passwd 修改用户密码
    chage 修改用户密码有效期
    批量更新用户密码
    su 切换用户
    visudo 编辑sudoers文件
    sudo 以另一个用户身份执行命令
    id 显示用户与用户组信息
    w 显示已登录用户信息
    显示已登录用户信息
    users 显示已登录用户
    whoami 显示当前登录的用户
    last 显示用户登录列表
    lastb 显示用户登录失败的记录
    lastlog 显示所有用户最近登录记录
    前言
    上一篇中已经预告,我们这篇主要说一说Linux中用户相关的命令。
    可能各位小伙伴用的Windows会比较多一点,在Windows操作系统中,我们知道有Administrator用户,Administrator 是Windows系统中的管理员用户,有着最高的权限。
    用户登录Administrator后可以创建Gust等用户,修改密码并且给Gust用户分配相应的权限。
    同样的在Linux中,root就相当于Administrator用户,具有着最高权限。登录root 用户可以创建用户、修改用户密码、给用户分配角色等等。
    ————————————————
    版权声明:本文为CSDN博主「xie_zhr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/rong09_13/article/details/126592897

     

     

     

     

     

    快速上手Linux核心命令(七):Linux系统信息相关命令

     

     

     

    前言

    这期呢主要说一说Linux中与系统相关的命令,一共包含10个命令
    在这里插入图片描述

    uname 显示系统信息

    1、简介

    uname命令用于显示系统相关信息,比如内核版本号、硬件架构等

    2、语法格式

    uname [参数选项]
    

    3、参数说明

    参数参数说明
    -a 显示系统所有相关信息
    -m 显示计算机硬件架构
    -n 显示主机名称
    -r 显示内核发行版本号
    -s 显示内核名称
    -v 显示内核版本

    4、实践操作

    ①显示系统所有信息

    [root@xiezhr ~]# uname -a
    Linux xiezhr 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    

    ②显示计算机硬件架构

    [root@xiezhr ~]# uname -m
    x86_64
    

    ③显示主机名称

    [root@xiezhr ~]# uname -n
    xiezhr
    

    ④显示内核发行版本号

    [root@xiezhr ~]# uname -r
    3.10.0-1127.19.1.el7.x86_64
    

    hostname 显示或设置系统主机名

    1、简介

    hostname用于显示或设置系统主机名‘

    2、语法格式

    hostname [参数选项]
    

    3、参数说明

    参数参数说明
    -i 显示主机IP地址,依赖DNS解析,比较慢
    -I 显示主机的所有IP地址,速度较快

    3、实践操作

    ①显示主机名

    [root@xiezhr ~]# hostname
    xiezhr
    

    ②修改主机名

    # 临时修改
    [root@xiezhr ~]# hostname hosta
    # 永久修改
    
    # Created by cloud-init on instance boot automatically, do not edit.
    [root@xiezhr ~]# vi /etc/sysconfig/network
    NETWORKING=yes
    hosta
    ~
    ~
    ~
    -- INSERT --
    

    ③ 获取IP地址

    [root@xiezhr ~]# hostname -i
    ::1 127.0.0.1 127.0.0.1 127.0.0.1
    [root@xiezhr ~]# hostname -I
    172.17.0.4
    

    du 统计磁盘空间使用情况

    1、简介

    du 用于统计磁盘空间使用情况。可以让我们找出哪些文件过多的占用磁盘空间

    2、语法格式

    du [参数选项] [文件或目录]
    

    3、参数说明

    参数参数说明
    -a 显示所有文件大小
    -h 以人类可读的方式显示,以K、M、G为单位显示
    -s 显示文件的总大小
    --exclude=<目录或文件> 略过指定的目录或文件
    --max-depth=<目录层数> 超过指定层数的目录后,予以忽略

    4、实践操作

    ① 【-a】参数显示所有目录或文件所占空间

    [root@xiezhr ~]# du -a
    4       ./.lesshst
    4       ./.bashrc
    4       ./.pydistutils.cfg
    4       ./.bash_profile
    4       ./.mysql_secret
    4       ./.pm2/modules
    4       ./.pm2/pm2.pid
    0       ./.pm2/pub.sock
    0       ./.pm2/rpc.sock
    4       ./.pm2/pids/tyloochat-0.pid
    8       ./.pm2/pids
    4       ./.pm2/module_conf.json
    184     ./.pm2/logs/tyloochat-out.log
    236     ./.pm2/logs/tyloochat-error.log
    424     ./.pm2/logs
    

    ② 以人类可读的方式显示当前路径下文件大小

    [root@xiezhr test]# du -h
    4.0K    ./dir5
    8.0K    ./dir
    8.0K    ./dir3
    12K     ./dir6
    4.0K    ./dir_bak
    112K    .
    

    ③ 显示当前路径下文件总大小

    [root@xiezhr test]# du -s
    112  
    

    ④指定层次的目录大小

    [root@xiezhr test]# du -h --max-depth=1 /usr/local/
    4.0K    /usr/local/lib
    4.0K    /usr/local/games
    2.6G    /usr/local/mysql
    4.0K    /usr/local/src
    2.5G    /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64
    4.0K    /usr/local/libexec
    4.0K    /usr/local/bin
    4.0K    /usr/local/etc
    1017M   /usr/local/qcloud
    92K     /usr/local/share
    4.0K    /usr/local/include
    4.0K    /usr/local/sbin
    4.0K    /usr/local/lib64
    6.6G    /usr/local/
    

    ⑤ 排除指定目录文件后的大小

    [root@xiezhr test]# du -h --max-depth=1 /usr/local/ --exclude=/usr/local/mysql
    4.0K    /usr/local/lib
    4.0K    /usr/local/games
    4.0K    /usr/local/src
    2.5G    /usr/local/mysql-5.7.19-linux-glibc2.12-x86_64
    4.0K    /usr/local/libexec
    4.0K    /usr/local/bin
    4.0K    /usr/local/etc
    1018M   /usr/local/qcloud
    92K     /usr/local/share
    4.0K    /usr/local/include
    4.0K    /usr/local/sbin
    4.0K    /usr/local/lib64
    4.1G    /usr/local/
    

    echo 显示一行文本

    1、简介

    echo 可以将指定的文本显示在Linux命令行上

    2、语法格式

    echo [参数选项] [文本]
    

    3、参数说明

    参数参数说明
    -n 不要自动换行
    -e 如果字符串中出现以下特殊字符,则进行特殊处理,不会当成一般字符输出 \b 删除前一个字符
    特殊字符特殊字符说明
    \a 发出警告声
    \b 删除前一个字符
    \c 最后不加上换行符
    \f 换行,但光标停留在原来的位置
    \n 换行,且光标移动到行首
    \r 光标移动到行首,但不换行
    \t 插入制表符tab
    \v 与-f 相同
    \ 插入\字符
    \' 插入' 字符
    \" 插入"字符

    4、实践操作

    ① 显示普通字符

    [root@xiezhr ~]# echo my official accounts  is xiezhrspace
    my official accounts is xiezhrspace
    

    ②显示转义字符

    [root@xiezhr ~]# echo \"my official account is xiezhrspace \"
    "my official account is xiezhrspace "
    

    ③ 将单行文本输入到文件中

    [root@xiezhr test]# echo my official account is xiezhrspace >> xie.txt
    [root@xiezhr test]# more xie.txt 
    my official account is xiezhrspace
    

    ④ 显示命令执行结果

    [root@xiezhr test]# echo `date`
    Mon May 9 21:37:40 CST 2022
    

    watch 监视命令执行情况

    1、简介

    watch 英文意思是看,用于以全屏的方式动态显示命令或程序的执行情况

    2、语法格式

    watch [参数选项] [命令]
    

    3、参数说明

    参数参数说明
    -n 命令执行的时间间隔、默认为2m
    -d 高亮显示命令结果变动之处
    -t 关闭watch命令执行后顶部显示的时间间隔、命令及当前时间

    4、实践操作

    每个一秒显示网络连接数的变化情况

    [root@xiezhr test]# watch -n 1 -d netstat -nginx
    
    Kernel Interface table
    Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0             1500 247530399      0      0 0      322331584      0      0      0 BMRU
    lo              65536   141692      0      0 0        141692      0      0      0 LRU
    

    stat

    1、简介

    stat 用于显示文件或文件系统的状态信息

    2、语法格式

    stat [参数选项] [文件或目录]
    

    3、参数说明

    参数参数说明
    -c 使用指定输出格式代替默认值

    4、实践操作

    查看文件的属性信息

    [root@xiezhr test]# stat /etc/hosts
      File: ‘/etc/hosts’
      Size: 157             Blocks: 8          IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 265944      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-11-29 10:25:47.000000000 +0800
    Modify: 2020-11-29 11:54:33.000000000 +0800
    Change: 2020-11-29 11:54:53.216579255 +0800
     Birth: -
    

    whereis 显示命令及其相关文件的全路径

    1、简介

    whereis 命令用于定位指定命令的可执行文件、源码文件及man帮助文件的路径

    2、语法格式

    whereis [参数选项] [文件名]
    

    3、参数说明

    参数参数说明
    -b 查找可执行文件
    -s 查找源代码文件
    -m 查找man帮助文件

    4、实践操作

    ① 查找可执行文件路径

    [root@xiezhr test]# whereis nginx
    nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx.8.gz
    

    ② 查找man 帮助文件

    [root@xiezhr test]# whereis -m nginx
    nginx: /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx.8.gz
    

    ③ 查找源代码文件

    [root@xiezhr test]# whereis -s nginx
    nginx:
    # 没有找到相关源代码
    

    date 显示与设置系统时间

    1、简介

    date命令用于显示当前系统时间或设置系统时间

    2、语法格式

    date [参数选项] [+日期格式]
    

    3、参数说明

    参数

    参数参数说明
    -d 时间字符串 显示指定字符串所描述的时间,而非当前时间
    -s 日期时间 设置系统时间

    日期格式

    格式格式说明
    %y 显示年(短格式)
    %Y 显示年(长格式)
    %m 显示月
    %d 显示日
    %H 24小时制 (00-23) 例如:7点显示07
    %k 24小时(0-23) 例如:7点显示7
    %I 12小时制(00-12)例如:7点显示07
    %l 12小时制(0-12)例如:7点显示7
    %M 分钟(00-59)
    %S 秒(00-60)
    %p 显示本地 AM 或 PM
    %F 完整日期格式,等价于%Y-%m-%d(2022-05-12)
    %T 完整时间格式,等价于%H:%M:%S(07:58:23)

    4、实践操作

    ①显示日期时间

    # 显示年(短格式)
    [root@xiezhr ~]# date +%y
    22
    # 显示年(长格式)
    [root@xiezhr ~]# date +%Y
    2022
    # 显示月
    [root@xiezhr ~]# date +%m
    05
    #显示日
    [root@xiezhr ~]# date +%d
    12
    # 显示时
    [root@xiezhr ~]# date +%H
    08
    # 显示分
    [root@xiezhr ~]# date +%M
    01
    # 显示秒
    [root@xiezhr ~]# date +%S
    53
    # 显示特殊日期(年-月-日)
    [root@xiezhr ~]# date +%F
    2022-05-12
    # 显示特殊格式时间(时:分:秒)
    [root@xiezhr ~]# date +%T
    08:02:18
    #格式化输出日期时间
    [root@xiezhr ~]# date "+%Y-%m-%d %H:%M:%S"
    2022-05-12 08:11:03
    

    ②参数【-d】的使用

    注:-号表示过去,+表示未来 day表示日,month表示月,year表示年

    # 显示昨天
    [root@xiezhr ~]# date +%F -d "-1day"
    2022-05-11
    # 显示明天
    [root@xiezhr ~]# date +%F -d "+1day"
    2022-05-13
    # 显示一个月后
    [root@xiezhr ~]# date +%F -d "+1month"
    2022-06-12
    # 显示一年后
    [root@xiezhr ~]# date +%F -d "+1year"
    2023-05-12
    

    ③ 参数【-s】设定时间

    # 设置20220512,时间为空则为00:00:00
    [root@xiezhr ~]# date -s 20220512
    Thu May 12 00:00:00 CST 2022
    # 设置时间为08:20:03,不会更改日期
    [root@xiezhr ~]# date -s 08:20:03
    Thu May 12 08:20:03 CST 2022
    # 通过不同格式设置日期时间
    [root@xiezhr ~]# date -s "08:22:04 20220512"
    Thu May 12 08:22:04 CST 2022
    [root@xiezhr ~]# date -s "08:22:04 2022/05/12"
    Thu May 12 08:22:04 CST 2022
    [root@xiezhr ~]# date -s "08:22:04 2022-05-12"
    Thu May 12 08:22:04 CST 2022
    

    which 显示命令全路径

    1、简介

    which 用于显示命令的全路径,经常用来查找命令在哪里,which的查找范围时path环境变量的路径

    2、语法格式

    which [参数选项] [命令名]
    

    3、参数说明

    注:默认在PATH路径中由前往后查找命令,如果找到了,就停止匹配。

    参数参数说明
    -a 遍历所有PATH路径,输出所有匹配项

    4、实践操作

    ①查找指定命令的全路径

    # 查看环境变量
    [root@xiezhr ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    # 查看man命令的全路径
    [root@xiezhr ~]# which man
    /usr/bin/man
    # 查看date命令的全路径
    [root@xiezhr ~]# which date
    /usr/bin/date
    # 查看cd命令的全路径
    [root@xiezhr ~]# which cd
    /usr/bin/cd
    

    ②【-a】参数

    [root@xiezhr ~]# which -a nginx
    /usr/sbin/nginx
    

    locate 快速定位文件路径

    1、简介

    Linux系统中有一个名为mlocate.db的数据库文件,包含了系统文件的文件名及对应路径信息。locate 命令查找文件时,不用遍历磁盘,而是直接查找mlocate.db文件

    注意:mlocate.db文件不是实时更新的,而是有系统自带的定时任务执行updatedb命令定期更新。当然了,我们在使用locate命令时,可以先用updatedb命令更新一下mlocate.db文件

    2、语法格式

    locate [参数选项] [文件名]
    

    3、参数说明

    参数参数说明
    -c 不显示匹配的内容,只显示匹配的行数
    -r 支持基本正则表达式匹配
    -i 匹配时忽略大小写
    --regex 支持扩展正则表达式匹配

    4、实践操作

    ①查找文件路径(只要包含pwd都会显示出来)

    [root@xiezhr ~]# locate pwd
    /etc/.pwd.lock
    /usr/bin/pwd
    /usr/bin/pwdx
    /usr/include/pwd.h
    /usr/lib/modules/3.10.0-1127.19.1.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko.xz
    /usr/lib64/cracklib_dict.pwd
    /usr/lib64/python2.7/lib-dynload/spwdmodule.so
    /usr/local/qcloud/monitor/python26/lib/python2.6/lib-dynload/spwd.so
    /usr/sbin/unix_chkpwd
    /usr/share/cracklib/cracklib-small.pwd
    /usr/share/cracklib/pw_dict.pwd
    /usr/share/man/man1/pwd.1.gz
    /usr/share/man/man1/pwdx.1.gz
    /usr/share/man/man8/unix_chkpwd.8.gz
    /usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt
    /usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt/nmi
    /usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt/nmi/decoding.h
    

    ②显示匹配的行号

    [root@xiezhr ~]# locate -c pwd
    17
    

    ③使用通配符查找文件路径

    [root@xiezhr ~]# locate /etc/sh*
    /etc/shadow
    /etc/shadow-
    /etc/shells
    /etc/shells.rpmnew
    

    这期内容就到这,下期根据思维导图就到Linux网络相关命令的使用了。

    涉及到的命令有: ping、 ifconfig、 netstat、 telnet、 ssh、 ip、 tcpdump、nmap、ss等等

    敬请期待哦(●’◡’●)

    专栏目录:快速上手Linux核心命令专栏目录

    上一篇:快速上手Linux核心命令(六):Linux的文本编辑器vi和vim
    下一篇:快速上手Linux核心命令(八):网络相关命令(博主正在玩命更新中)

     

    快速上手Linux核心命令(八):网络相关命令

     

     

     

    前言

    这期呢主要说一说Linux中与网络相关命令,一共包含19个命令

    测试主机之间网络是否联通

    1、简介

    ping 命令不管是在Windows还是Linux都是比较常用的命令。命令用于测试主机之间的网络连通性

    2、语法格式

    ping [参数选项] [目标主机]
    

    3、参数说明

    参数参数说明
    -c 指定报文次数,若不指定,ping命令将一直发送报文
    -i 相邻两次发送报文的时间间隔,默认时间间隔是1s
    -s 设置发送数据包大小,默认为56字节,加上8字节ICMP头,共64字节数据包

    还有其他的参数,这里就不一一列举了。。。。

    4、实践操作

    ①测试与目标主机的网络连通性

    # 网络正常情况
    [root@xiezhr ~]# ping www.xiezhrspace.cn
    PING www.xiezhrspace.cn (42.192.46.248) 56(84) bytes of data.
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=1 ttl=63 time=0.233 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=2 ttl=63 time=0.215 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=3 ttl=63 time=0.230 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=4 ttl=63 time=0.235 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=5 ttl=63 time=0.235 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=6 ttl=63 time=0.246 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=7 ttl=63 time=0.243 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=8 ttl=63 time=0.215 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=9 ttl=63 time=0.227 ms
    
    # 网络不正常
    [root@xiezhr ~]# ping 10.10.114.56
    PING 10.10.114.56 (10.10.114.56) 56(84) bytes of data.
    
    

    上面命令执行后会一直发送报文,相当于windows中的ping www.baidu.com -t

    ② 指定发送报文的次数

    # 发送报文4次后自动退出
    [root@xiezhr ~]# ping -c 4 www.xiezhrspace.cn
    PING www.xiezhrspace.cn (42.192.46.248) 56(84) bytes of data.
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=1 ttl=63 time=0.230 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=2 ttl=63 time=0.248 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=3 ttl=63 time=0.226 ms
    64 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=4 ttl=63 time=0.214 ms
    
    --- www.xiezhrspace.cn ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3021ms
    rtt min/avg/max/mdev = 0.214/0.229/0.248/0.019 ms
    

    ③ 多参数使用情况

    [root@xiezhr ~]# ping -c 4 -i 3 -s 1024 -t 255 www.xiezhrspace.cn
    PING www.xiezhrspace.cn (42.192.46.248) 1024(1052) bytes of data.
    1032 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=1 ttl=63 time=0.214 ms
    1032 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=2 ttl=63 time=0.250 ms
    1032 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=3 ttl=63 time=0.226 ms
    1032 bytes from 42.192.46.248 (42.192.46.248): icmp_seq=4 ttl=63 time=0.261 ms
    
    --- www.xiezhrspace.cn ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 9027ms
    rtt min/avg/max/mdev = 0.214/0.237/0.261/0.026 ms
    

    上面列子中参数解释

    • -c 4 : 发送4次报文
    • -i 3:每隔3s发送一次报文
    • -s 1024: 每次发送数据报文大小为1024字节
    • -t 255: **发送数据包的ttl值为255 **

    ifconfig 配置或显示网络信息

    1、简介

    ifconfig 命令类似于Windows 下的ipconfig 。不知道大家会不会混淆在一起,反正我是经常混淆了在一起(●'◡'●)。命令用于显示网卡IP地址等参数信息

    2、语法格式

    ifconfig [网路接口] [参数选项]
    

    网络接口指的是:eth0、eth1和lo 分别表示第一块网卡、第二块网卡和回环接口。该选项是非必填项

    3、 参数说明

    参数参数说明
    -a 显示所有网络接口信息,包括活动的和非活动的
    -up 激活指定网络接口
    -down 关闭指定网络接口
    hw 设置网络接口的物理地址(MAC地址)

    4、实践操作

    ①显示当前系统开启的所有网络接口信息

    [root@xiezhr ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.4  netmask 255.255.240.0  broadcast 172.17.15.255
            inet6 fe80::5054:ff:fe19:f6d0  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:19:f6:d0  txqueuelen 1000  (Ethernet)
            RX packets 254776100  bytes 26271134342 (24.4 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 331164543  bytes 72224346549 (67.2 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
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 143816  bytes 10756556 (10.2 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 143816  bytes 10756556 (10.2 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    • eth0表示第一块网卡、第二块为eth1,依次类推;lo表示回环接口

    ②显示指定网卡eth0信息

    [root@xiezhr ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.4  netmask 255.255.240.0  broadcast 172.17.15.255
            inet6 fe80::5054:ff:fe19:f6d0  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:19:f6:d0  txqueuelen 1000  (Ethernet)
            RX packets 254778009  bytes 26271295935 (24.4 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 331166449  bytes 72224671528 (67.2 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    ③ 启动关闭网卡

    # 关闭网卡
    [root@xiezhr ~]# ifconfig eth0 down
    # 启动网卡
    [root@xiezhr ~]# ifconfig eth0 up
    
    

    ④ 设置网卡IP

    [root@xiezhr ~] ifconfig eth0 192.168.205.98 
    

    route 显示或管理路由表

    1、简介

    route 命令用来显示或管理Linux的路由表

    2、路由小科普

    说到路由,不得不简单做下科普。这里只是简单通俗介绍一下,如果需要了解更多请查阅相关资料哈

    路由表与生活中的路标指示牌类似,指示牌指引着我们该往什么地方走;而路由表则指引着数据包该去向何方。

    在这里插入图片描述

    不得不说技术源于生活,又服务于生活。

    那么,两台计算机之间是怎么传输数据的呢?

    • 数据的传输必须要又网络来完成,而网络是由两台计算机之间一个或多个节点构成的
    • 数据传输由一台计算机传送到第一个网络节点,然后这个网络节点会根据“约定”将数据传宋到另一个网络节点,另一个网络节点再根据“约定”将数据传输到下一个节点,直到把数据传输到另一台计算机。 这里的“约定”就是我们上面说的路由表
    • 路由表说白了就是指定了一些规则,标明数据报文该何去何从
    • 路由分为静态路由和动态路由。
    • 我们通过route命令手动加入的路由属于静态路由;动态路由时无需手动加入的,其路由规则时不同计算机彼此相互交换路由规则而来的

    3、语法格式

    route [参数选项]
    

    4、参数说明

    参数参数说明
    -n 直接使用ip地址,不进行DNS解析主机名
    add 添加路由信息
    del 删除路由信息
    -net 到一个网络的路由,参数后面接的是一个网络号地址
    -host 到一个主机的路由,参数后面接的时一个主机地址
    netmask NM 为添加的路由指定网络掩码
    gw GW 为发往木匾网络/主机的任何分组指定网关
    dev If 指定有哪个网络设备出去,后面接网络设备名 如:eth0

    5、实践操作

    ① 查看当前系统路由表信息

    [root@xiezhr ~]# route 
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         gateway         0.0.0.0         UG    0      0        0 eth0
    link-local      0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    172.17.0.0      0.0.0.0         255.255.240.0   U     0      0        0 eth0
    
    • Destination :网络号,也就是network的意思
    • Gateway:连出网关地址,也就是说该网络时通过该IP连接出去的,0.0.0.0,则表示该路由直接由本机传送出去。如果由具体IP,表示本条路由必须经过该IP转接才能连接出去
    • Genmask:表示子网掩码
    • Flags:路由标记信息
      • U :表示此路由当前为启动状态
      • H:目标路由是一个主机(IP)而非网络
      • R:使用动态路由时,恢复路由信息标识
      • G:表示他需要通过外部的注解来转接传递数据
      • M:表示路由已经被修改
      • D:已经由服务设定为动态路由
    • Metric :表示需要经过几个网络节点才能到达路由的目标网络地址
    • Ref:参考到此路由规则的数目
    • Use:有几个转送数据包参考到了此路由规则
    • Iface:路由对应的网络设备接口

    ② 添加或删除路由

    # 删除默认网关方法1
    [root@xiezhr ~]# route del default
    # 删除默认网关方法2
    [root@xiezhr ~]# route del default gw 10.0.0.2
    # 添加网关
    [root@xiezhr ~]# route add default gw 10.0.0.2 dev eth0
    

    netstat 查看网络状况

    1、简介

    netstat 命令用于显示本机网络的连接状态、运行端口和路由表等信息

    2、语法格式

    netstat [参数选项]
    

    3、参数说明

    参数参数说明
    -n 显示数字形式的地址而不是去解析主机、端口或用户名
    -a 显示处于监听状态和非监听状态的socket信息
    -c<秒数> 后面跟的秒数表示每隔几秒就刷新显示一次
    -t 显示所有的TCP连接情况
    -u 显示所有的UDP连接情况
    -p 显示socket所属进程的PID和名称

    4、实践操作

    ① 显示详细的所有连接信息

    [root@xiezhr ~]# netstat -an
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
    tcp        0      0 172.17.0.4:80           103.127.81.10:33832     SYN_RECV   
    tcp        0      0 172.17.0.4:80           154.221.22.70:44617     SYN_RECV   
    tcp        0      0 172.17.0.4:80           103.195.150.7:31982     SYN_RECV 
    。。。
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          
    udp        0      0 172.17.0.4:123          0.0.0.0:*                          
    udp        0      0 127.0.0.1:123           0.0.0.0:*                          
    udp6       0      0 fe80::5054:ff:fe19::123 :::*                               
    udp6       0      0 ::1:123                 :::*                               
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  2      [ ACC ]     STREAM     LISTENING     12804    /var/run/lsm/ipc/simc
    unix  2      [ ACC ]     STREAM     LISTENING     12810    /var/run/lsm/ipc/sim
    

    简单说明下上面显示内容的含义

    列数名称含义
    第一列 Proto socket使用的协议(TCP/UDP/RAW)
    第二列 Recv-Q 接收到但是还未处理的字节数
    第三列 Send-Q 已经发送但是未被远程主机确认收到的字节数
    第四列 Local Address 本机主机地址和端口
    第五列 Froeign Address 远程主机地址和端口
    第六列 State tcp状态

    ② 显示所有TCP、UDP正在监听的连接信息

    [root@xiezhr ~]# netstat -lntup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2812/nginx: master  
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      980/sshd            
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      2812/nginx: master  
    tcp        0      0 0.0.0.0:65535           0.0.0.0:*               LISTEN      17087/./proc        
    tcp6       0      0 :::80                   :::*                    LISTEN      2812/nginx: master  
    tcp6       0      0 :::3000                 :::*                    LISTEN      27339/PM2 v4.5.1: G 
    tcp6       0      0 :::443                  :::*                    LISTEN      2812/nginx: master  
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           809/dhclient        
    udp        0      0 172.17.0.4:123          0.0.0.0:*                           546/ntpd            
    udp        0      0 127.0.0.1:123           0.0.0.0:*                           546/ntpd            
    udp6       0      0 fe80::5054:ff:fe19::123 :::*                                546/ntpd            
    udp6       0      0 ::1:123                 :::*                                546/ntpd 
    

    ③ 显示当前系统的路由表

    [root@xiezhr ~]# netstat -rn
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         172.17.0.1      0.0.0.0         UG        0 0          0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
    172.17.0.0      0.0.0.0         255.255.240.0   U         0 0          0 eth0
    

    ④ 显示网络的接口状况

    [root@xiezhr ~]# netstat -i
    Kernel Interface table
    Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0             1500 257171559      0      0 0      334662383      0      0      0 BMRU
    lo              65536   144476      0      0 0        144476      0      0      0 LRU
    

    telnet 远程登录主机

    1、简介

    telnet以前用于远程登录主机,但是其安全性不好。因此现在一般采用更加安全的SSH,这个后面也会说到。

    现在telnet命令主要用于判断远端服务器端口是否开发

    2、语法格式

    telnet [参数选项] [主机名或IP] [端口]
    

    3、实际操作

    ①测试端口是否开放

    [root@xiezhr ~]# telnet 112.112.17.172 31189
    

    ssh 安全的远程登录主机

    1、简介

    ssh命令用于安全的登录远程服务器,实现对服务器的远程管理。取代了telnet命令

    2、语法格式

    ssh [参数选项] [用户名@] [主机名或IP地址] [远程执行的名]
    

    3、参数说明

    参数参数说明
    -p 指定ssh登录端口,如果忽略则默认为22端口
    -t 强制分配伪终端,可以在远程机器上执行任何全屏幕程序。
    -v 调试模式

    4、实践操作

    ① 远程登录服务器

    [root@xiezhr ~]# ssh 220.165.5.45
    

    ②远程执行命令

    [root@xiezhr ~]# ssh 10.0.0.26 "free -m"
    

    wget 命令行下载工具

    1、简介

    wget 用于从网络上下载某些资料。只要Linux连接互联网,就可以直接从网络上下载自己所需的文件

    • 支持断点下载
    • 支持ftp和http下载方式
    • 支持代理服务器
    • 非常稳定。如果由于网络原因下载失败,wget 会不断尝试,直到整个文件下载完毕。如果服务器打断了下载过程,当再次连接服务器时,会从停止的地方继续下载。【这对下载大文件非常有用】

    2、语法格式

    wget [参数选项] [下载地址]
    

    3、参数说明

    参数参数说明
    -O 指定保存的文件名后下载文件
    --limit-rate 限速下载
    -b 转入后台执行命令
    -c 断点续传
    --tries=number 设置重置次数
    --spider 模拟爬虫访问

    4、实践操作

    ① wget下载单个文件

    [root@xiezhr /]# wget https://xiezhrspace.cn/medias/logo.png
    --2022-05-30 23:08:24--  https://xiezhrspace.cn/medias/logo.png
    Resolving xiezhrspace.cn (xiezhrspace.cn)... ::1, ::1
    Connecting to xiezhrspace.cn (xiezhrspace.cn)|::1|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 112674 (110K) [image/png]
    Saving to: ‘logo.png’
    
    100%[========================================================================================================================================================================>] 112,674     --.-K/s   in 0s      
    
    2022-05-30 23:08:24 (433 MB/s) - ‘logo.png’ saved [112674/112674]
    

    ②使用-O参数,指定下载文件的保存文件名

    [root@xiezhr test]# wget -O /home/test/logo.png https://www.xiezhrspace.cn/medias/logo.png
    --2022-05-30 23:14:03--  https://www.xiezhrspace.cn/medias/logo.png
    Resolving www.xiezhrspace.cn (www.xiezhrspace.cn)... 42.192.46.248
    Connecting to www.xiezhrspace.cn (www.xiezhrspace.cn)|42.192.46.248|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 112674 (110K) [image/png]
    Saving to: ‘/home/test/logo.png’
    
    100%[========================================================================================================================================================================>] 112,674     --.-K/s   in 0.01s   
    
    2022-05-30 23:14:03 (9.78 MB/s) - ‘/home/test/logo.png’ saved [112674/112674]
    
    [root@xiezhr test]# cd /home/test/
    [root@xiezhr test]# ll
    total 208
    -rw-r--r-- 1 root   root   112674 Nov 29  2020 logo.png
    

    ③ 限速3kb/s下载

    [root@xiezhr test]# wget --limit-rate=3k https://www.xiezhrspace.cn/medias/logo.png
    --2022-05-30 23:15:57--  https://www.xiezhrspace.cn/medias/logo.png
    Resolving www.xiezhrspace.cn (www.xiezhrspace.cn)... 42.192.46.248
    Connecting to www.xiezhrspace.cn (www.xiezhrspace.cn)|42.192.46.248|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 112674 (110K) [image/png]
    Saving to: ‘logo.png.1’
    
    100%[========================================================================================================================================================================>] 112,674     3.00KB/s   in 37s    
    
    2022-05-30 23:16:34 (3.00 KB/s) - ‘logo.png.1’ saved [112674/112674]
    

    ④ 断点续传下载大文件

    [root@xiezhr test]# wget -c https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
    

    ⑤后台下载文件

    [root@xiezhr test]# wget -b https://www.xiezhrspace.cn/medias/logo.png
    Continuing in background, pid 4526.
    Output will be written to ‘wget-log’.
    

    ⑥ 有些网站会根据判断代理名称是不是浏览器而拒绝你的下载请求,这时候就可以伪装代理下载

    [root@xiezhr test]# wget -b https://www.xiezhrspace.cn/medias/logo.png
    Continuing in background, pid 4526.
    Output will be written to ‘wget-log’.
    [root@xiezhr test]# clear
    [root@xiezhr test]# wget --user-agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36" https://www.xiezhrspace.cn/medias/logo.png
    --2022-05-30 23:29:27--  https://www.xiezhrspace.cn/medias/logo.png
    Resolving www.xiezhrspace.cn (www.xiezhrspace.cn)... 42.192.46.248
    Connecting to www.xiezhrspace.cn (www.xiezhrspace.cn)|42.192.46.248|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 112674 (110K) [image/png]
    Saving to: ‘logo.png.3’
    
    100%[========================================================================================================================================================================>] 112,674     --.-K/s   in 0.01s   
    
    2022-05-30 23:29:27 (9.85 MB/s) - ‘logo.png.3’ saved [112674/112674]
    

    ⑦ 监控网站URL是否正常

    # 采用静默方式访问网站,3秒超时,重试1次,模拟爬虫方式进行访问
    [root@xiezhr test]# wget -q -T 3 --tries=1 --spider www.xiezhrspace.cn
    # 返回0表示正常
    [root@xiezhr test]# echo $?
    0
    
    

    ip网络配置工具

    1、简介

    ip 命令用于显示或管理Linux系统的路由、网络设备、策略路由和隧道

    2、语法格式

    ip [参数选项] [网络对象] [操作命令]
    

    3、参数说明

    参数参数说明
    -s 输出更详细的信息
    -r 显示主机时,不适用ip地址,而是使用主机的域名
    -V 显示命令的版本信息
       

    3、网络对象及对应操作命令

    网络对象网络对象说明对应操作命令
    link 网络设备 set:修改设备属性、show:显示设备属性
    address 设备的协议地址(IP地址) add:添加协议地址、del:删除协议地址、flush:清除协议地址、show:查看协议地址
    addrlabel 协议地址标签管理 add、del、list、flush
    neighbour arp或ndisc缓存表  
    route 路由表 add、change、relpace、delete、show、flush
    rule 策略路由表 add、delete、flush、show
    maddress 多播地址 show、add、delete
    mroute 多播路由缓存表 show
    tunnel IP隧道 add、change、delete、prl、show
         

    4、实践操作

    ip link show                     # 显示网络接口信息
    ip link set eth0 up             # 开启网卡
    ip link set eth0 down            # 关闭网卡
    ip link set eth0 promisc on      # 开启网卡的混合模式
    ip link set eth0 promisc offi    # 关闭网卡的混个模式
    ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
    ip link set eth0 mtu 1400        # 设置网卡最大传输单元
    ip addr show     # 显示网卡IP信息
    ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
    ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
    
    ip route show # 显示系统路由
    ip route add default via 192.168.1.254   # 设置系统默认路由
    ip route list                 # 查看路由信息
    ip route add 192.168.4.0/24  via  192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
    ip route add default via  192.168.0.254  dev eth0        # 设置默认网关为192.168.0.254
    ip route del 192.168.4.0/24   # 删除192.168.4.0网段的网关
    ip route del default          # 删除默认路由
    ip route delete 192.168.1.0/24 dev eth0 # 删除路由
    

    tcpdump 监听网络流量

    1、简介

    tcpdump 命令是一个包分析工具。可以将网络中传输的数据包的“头”完全截获下来以提供分析。

    2、语法格式

    tcpdump [参数选项] [表达式]
    

    3、参数说明

    参数参数说明
    -c 接收指定数据包数目后退出命令
    -i 指定要监听数据包的网络接口
    -n 不精细DNS解析,加快显示速度
    -nn 不将协议和端口数字等转换成名字
    -q 以快速输出的方式运行,输出的信息比较简洁

    4、实践操作

    ① 不带参数监听网络

    [root@xiezhr ~]# tcpdump
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    21:49:34.194426 IP xiezhr.ssh > 39.130.60.147.54868: Flags [P.], seq 2354337386:2354337582, ack 602321997, win 255, length 196
    21:49:34.194837 IP xiezhr.55410 > 183.60.82.98.domain: 13037+ PTR? 147.60.130.39.in-addr.arpa. (44)
    21:49:34.241013 IP 39.130.60.147.54868 > xiezhr.ssh: Flags [.], ack 0, win 511, length 0
    21:49:34.260399 IP 183.60.82.98.domain > xiezhr.55410: 13037 NXDomain 0/1/0 (93)
    21:49:34.261639 IP xiezhr.44621 > 183.60.83.19.domain: 25778+ PTR? 4.0.17.172.in-addr.arpa. (41)
    21:49:34.262436 IP 183.60.83.19.domain > xiezhr.44621: 25778 NXDomain 0/1/0 (100)
    
    

    ② 精简输出信息

    [root@xiezhr ~]# tcpdump -q
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    21:51:39.084015 IP xiezhr.ssh > 39.130.60.147.54868: tcp 196
    21:51:39.084415 IP xiezhr.54183 > 183.60.83.19.domain: UDP, length 44
    21:51:39.084690 IP 183.60.83.19.domain > xiezhr.54183: UDP, length 93
    21:51:39.095563 IP xiezhr.37447 > 183.60.82.98.domain: UDP, length 41
    21:51:39.095795 IP 183.60.82.98.domain > xiezhr.37447: UDP, length 100
    21:51:39.107963 IP xiezhr.57539 > 183.60.83.19.domain: UDP, length 43
    21:51:39.108025 IP xiezhr.ssh > 39.130.60.147.54868: tcp 100
    21:51:39.108749 IP 183.60.83.19.domain > xiezhr.57539: UDP, length 107
    21:51:39.118945 IP xiezhr.51494 > 183.60.82.98.domain: UDP, length 43
    21:51:39.119024 IP xiezhr.ssh > 39.130.60.147.54868: tcp 180
    21:51:39.119165 IP 183.60.82.98.domain > xiezhr.51494: UDP, length 107
    21:51:39.130005 IP xiezhr.ssh > 39.130.60.147.54868: tcp 596
    21:51:39.130036 IP xiezhr.ssh > 39.130.60.147.54868: tcp 100
    

    ③监听指定网卡收到的数据包

    [root@xiezhr ~]# tcpdump -i eth0
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    21:52:41.482275 IP 169.254.0.4.http > xiezhr.45330: Flags [.], ack 31739111, win 136, length 0
    21:52:41.486536 IP xiezhr.48369 > 183.60.82.98.domain: 56337+ PTR? 4.0.17.172.in-addr.arpa. (41)
    ^C21:52:41.487054 IP xiezhr.ssh > 39.130.60.147.54868: Flags [P.], seq 2354686734:2354686930, ack 602325169, win 255, length 196
    

    ④ 监听指定主机数据包

    [root@xiezhr ~]# tcpdump -n host 220.165.5.50 
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    

    ⑤ 监听指定端口数据包

    [root@xiezhr ~]# tcpdump -nn port 22
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    21:54:39.961652 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 2354867994:2354868190, ack 602329953, win 255, length 196
    21:54:39.961828 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 196:376, ack 1, win 255, length 180
    21:54:39.961860 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 376:524, ack 1, win 255, length 148
    21:54:39.961888 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 524:672, ack 1, win 255, length 148
    21:54:39.961916 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 672:820, ack 1, win 255, length 148
    21:54:39.961943 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 820:968, ack 1, win 255, length 148
    21:54:39.961971 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 968:1116, ack 1, win 255, length 148
    21:54:39.961998 IP 172.17.0.4.22 > 39.130.60.147.54868: Flags [P.], seq 1116:1264, ack 1, win 255, length 148
    

    nmap 网络探测工具和安全/端口扫描器

    1、简介

    nmap 是一款开源的网络探测和安全审核工具。其作用是快速扫描大型网络,并发现网络上有哪些主机,主机提供哪些服务,并探测操作系统的类型及版本信息

    如果系统没有nmap命令,可通过一下命令安装

    yum -y install nmap
    

    2、语法格式

    nmap [扫描类型] [通用选项] [扫描目标]
    

    3、参数说明

    参数参数说明
    -sS TCP同步扫描
    -sn 不进行端口扫描,只检查主机正在运行
    -v 显示扫描过程中的详细信息
    -n 不进行DNS解析,加快扫描速度
    -p<端口> 指定扫描端口,可以是一个单独的端口,也可以是逗号分隔的多个端口

    4、实践操作

    ① 查看主机当前开放的端口

    [root@xiezhr ~]# nmap 127.0.0.1 
    

    ②扫描主机的指定端口

    [root@xiezhr ~]#  nmap -p 1024-65535 127.0.0.1
    

    ③扫描局域网内所有IP

    [root@xiezhr ~]# nmap 10.0.0.0/24
    

    ifup 激活网络接口

    1、简介

    ifup 用于激活指定的网络接口

    2、语法格式

    ifup [网络接口]
    

    3、实践操作

    激活网络接口

    [root@xiezhr ~]# ifup eht0
    

    ifdown 禁用网络接口

    1、简介

    ifdown命令与上面说的ifup命令刚好作用相反,用于禁用网络接口

    2、语法格式

    ifdown [网络接口]
    

    3、实践操作

    禁用网络接口

    [root@xiezhr ~]# ifdown eht1
    

    arp 管理系统的arp缓存

    1、简介

    首先我们先来看看什么是arp? arp是地址解析协议,主要功能是通过ip地址获取物理地址(MAC地址)

    arp命令用于操作本机arp缓存,可以显示、删除、添加指定IP地址与MAC地址对应关系

    2、语法格式

    arp [参数选项]
    

    3、参数说明

    参数参数说明
    -n 显示数字IP地址
    -s <主机或MAC地址> 指定主机的IP地址与MAC地址静态映射关系
    -d<主机> 从arp缓存区中删除指定主机的arp条目

    4、实践操作

    ① 显示arp缓存区的所有条目

    [root@xiezhr ~]# arp
    Address                  HWtype  HWaddress           Flags Mask            Iface
    169.254.0.79             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.128.6            ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.4              ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.128.4            ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.2              ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.15             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.55             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.81             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.82             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.83             ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.80             ether   fe:ee:00:2e:16:9a   C                     eth0
    172.17.0.5               ether   fe:ee:00:2e:16:9a   C                     eth0
    gateway                  ether   fe:ee:00:2e:16:9a   C                     eth0
    169.254.0.23             ether   fe:ee:00:2e:16:9a   C                     eth0
    

    ② 查询指定主机的arp条目

    [root@xiezhr ~]# arp -n 42.192.46.248
    42.192.46.248 (42.192.46.248) -- no entrys
    

    ③ 静态绑定IP地址与MAC地址

    [root@xiezhr ~]#  arp -s 10.0.0.100 00:0c:29:c0:5e:df
    

    ss 查看网络状况

    1、简介

    ss 命令用于查看网络状态信息,包括TCP、UDP连接、端口。

    如果系统没有该命令,需要自己安装一下

    yum -y install iproute
    

    2、语法格式

    ss [参数选项] [过滤器]
    

    3、参数说明

    参数参数说明
    -n 显示IP地址不进行DNS解析
    -a 显示所有socket连接
    -l 显示所有监听socket
    -p 显示使用socket的进程
    -t 仅显示TCP的socket
    -u 仅显示UCP的socket

    4、实践操作

    ① 显示所有的socket连接

      [root@xiezhr ~]# ss -an
    Netid  State      Recv-Q Send-Q        Local Address:Port       Peer Address:Port              
    nl     UNCONN     0      0                         0:0                      *                   
    nl     UNCONN     0      0                         0:546                    *                   
    nl     UNCONN     0      0                         0:546                    *                   
    nl     UNCONN     4352   0                         4:30221                  *                   
    nl     UNCONN     768    0                         4:0                      *                   
    nl     UNCONN     0      0                         6:0                          
    

    ② 显示所有正在监听的TCP和UDP连接

    Netid  State   Recv-Q  Send-Q  Local                               Address:Port  Peer                                                      Address:Port
    udp    UNCONN  0       0       *:68                                *:*           users:(("dhclient",pid=809,fd=6))
    udp    UNCONN  0       0       172.17.0.4:123                      *:*           users:(("ntpd",pid=546,fd=19))
    udp    UNCONN  0       0       127.0.0.1:123                       *:*           users:(("ntpd",pid=546,fd=16))
    udp    UNCONN  0       0       [fe80::5054:ff:fe19:f6d0]%eth0:123  [::]:*        users:(("ntpd",pid=546,fd=20))
    udp    UNCONN  0       0       [::1]:123                           [::]:*        users:(("ntpd",pid=546,fd=17))
    tcp    LISTEN  0       128     *:80                                *:*           users:(("nginx",pid=26238,fd=6),("nginx",pid=2812,fd=6))
    tcp    LISTEN  0       128     *:22                                *:*           users:(("sshd",pid=980,fd=3))
    tcp    LISTEN  0       128     *:443                               *:*           users:(("nginx",pid=26238,fd=8),("nginx",pid=2812,fd=8))
    tcp    LISTEN  0       1       *:65535                             *:*           users:(("proc",pid=17087,fd=3))
    tcp    LISTEN  0       128     [::]:80                             [::]:*        users:(("nginx",pid=26238,fd=7),("nginx",pid=2812,fd=7))
    tcp    LISTEN  0       128     [::]:3000                           [::]:*        users:(("PM2                                              v4.5.1:       God",pid=27339,fd=20))
    tcp    LISTEN  0       128     [::]:443                            [::]:*        users:(("nginx",pid=26238,fd=9),("nginx",pid=2812,fd=9))
    

    nc 多功能网络工具

    1、简介

    nc 是一个多功能、可靠、强大的网络工具,可以建立TCP连接,发送UDP数据包,监听端口,处理IPv4和IPv6数据包

    如果系统没有nc命令,可以通过一下命令手动安装

    yum -y install nc
    

    2、语法格式

    nc [参数选项]
    

    3、参数说明

    参数参数说明
    -l 指定监听端口,然后一直等待网络连接
    -z 表示zero,表示扫描时不发送任何数据
    -v 显示详细输出

    4、实践操作

    ①TCP端口扫描

    [root@xiezhr ]# nc -v -z -w2 192.168.0.3 1-100 
    192.168.0.3: inverse host lookup failed: Unknown host
    (UNKNOWN) [192.168.0.3] 80 (http) open
    (UNKNOWN) [192.168.0.3] 23 (telnet) open
    (UNKNOWN) [192.168.0.3] 22 (ssh) open
    

    ②扫描指定端口

    [root@xiezhr ~]# nc -nvv 192.168.0.1 80 //扫描 80端口
    (UNKNOWN) [192.168.0.1] 80 (?) open
    y  //用户输入
    

    mail 发送和接收文件

    1、简介

    mail命令是命令行的电子邮件接收和发送工具

    2、语法格式

    mail [参数选项]
    

    3、参数说明

    参数参数说明
    -s 指定邮件主题
    -a 发送邮件附件,多个附件使用多次-a选项即可

    nslookup 域名查询工具

    1、简介

    nslookup 命令是常用的域名查询工具

    如果系统没有该命令,需要按照以下方式自己安装下

    yum -y install bind-utils
    

    2、语法格式

    nslookup [参数选项] [域名/IP] [DNS服务器]
    

    3、参数说明

    参数参数说明
    server<域名服务器> 指定解析域名的服务器地址
    set 关键字=值 设置查询关键字(域名属性的值)
    all(全部) 查询域名有关的所有信息
    domain=name 指定查询域名
    port=端口号 指定域名服务器使用的端口号
    type=类型名 指定域名查询类型
    retry=<次数>指定查询时重试册数
    timeout= 秒数 指定查询的超时时间

    dig 域名查询工具

    1、简介

    dig 是常用的域名查询工具,可以用于测试域名系统的工作是否正常

    2、语法格式

    dig [参数选项]
    

    3、参数说明

    参数参数说明
    @<DNS服务器地址> 指定进行域名解析的域名服务器
    -t 指定要查询的DNS数据类型,如A、MX和PTR
    +trace 从跟域开始跟踪查询结果

    4、实践操作

    ① 查询指定域名的IP地址

    [root@xiezhr init.d]# dig www.xiezhrspace.cn
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> www.xiezhrspace.cn
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43520
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;www.xiezhrspace.cn.            IN      A
    
    ;; ANSWER SECTION:
    www.xiezhrspace.cn.     600     IN      A       42.192.46.248
    
    ;; Query time: 76 msec
    ;; SERVER: 183.60.82.98#53(183.60.82.98)
    ;; WHEN: Fri Jun 03 09:28:46 CST 2022
    ;; MSG SIZE  rcvd: 52
    

    ② 查询MX类型的域名信息

    [root@xiezhr init.d]# dig -t MX www.xiezhrspce.cn
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> -t MX www.xiezhrspce.cn
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 62926
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;www.xiezhrspce.cn.             IN      MX
    
    ;; AUTHORITY SECTION:
    cn.                     594     IN      SOA     a.dns.cn. root.cnnic.cn. 2029763095 7200 3600 2419200 21600
    
    ;; Query time: 76 msec
    ;; SERVER: 183.60.82.98#53(183.60.82.98)
    ;; WHEN: Fri Jun 03 09:29:54 CST 2022
    ;; MSG SIZE  rcvd: 88
    

    ③ 显示完整DNS解析过程

    [root@xiezhr init.d]# dig @223.5.5.5 www.xiezhrspace.cn +trace
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @223.5.5.5 www.xiezhrspace.cn +trace
    ; (1 server found)
    ;; global options: +cmd
    .                       3323    IN      NS      k.root-servers.net.
    .                       3323    IN      NS      g.root-servers.net.
    .                       3323    IN      NS      m.root-servers.net.
    .                       3323    IN      NS      f.root-servers.net.
    .                       3323    IN      NS      c.root-servers.net.
    .                       3323    IN      NS      e.root-servers.net.
    .                       3323    IN      NS      d.root-servers.net.
    .                       3323    IN      NS      l.root-servers.net.
    .                       3323    IN      NS      i.root-servers.net.
    ...
    

    host 域名查询工具

    1、简介

    host 命令用于查询DNS工具,可以将指定主机名转换为IP地址

    2、语法格式

    host [参数选项]
    

    3、参数说明

    参数参数说明
    -a 显示详细的DNS信息
    -t 指定查询的域名信息类型,可以是“A”、”ALL“、”MX“、”NS“

    4、实践操作

    ① DNS查询

    [root@xiezhr init.d]# host www.xiezhrspace.cn
    www.xiezhrspace.cn has address 42.192.46.248
    

    ② 查询详细信息

    [root@xiezhr init.d]# host -a www.xiezhrspace.cn
    Trying "www.xiezhrspace.cn"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41474
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;www.xiezhrspace.cn.            IN      ANY
    
    ;; ANSWER SECTION:
    www.xiezhrspace.cn.     600     IN      A       42.192.46.248
    
    Received 52 bytes from 183.60.82.98#53 in 65 ms
    

    这期主要是说了Linux系统网络相关命令,大概内容就这些了。下期根据思维导图就到了文件备份与压缩相关的命令了。这些命令呢比较基础,但也是比较重要的

    涉及到的命令有: tar、gzip、zip、unzip、scp、rsync等等

    敬请期待哦(●’◡’●)

    专栏目录:快速上手Linux核心命令专栏目录

    上一篇:快速上手Linux核心命令(七):Linux系统信息相关命令x
    下一篇:快速上手Linux核心命令(九):文件备份与压缩命令(博主正在玩命更新中)

     
    好文要顶 关注我 收藏该文  
    3
    0
     
     
     
    « 上一篇: 快速上手Linux核心命令(七):Linux系统信息相关命令
    » 下一篇: 快速上手Linux核心命令(九):文件备份与压缩
     
     

快速上手Linux核心命令(九):文件备份与压缩

 

 

 

这期呢主要说一说Linux中文件备份与压缩命令,一共6个命令。这6个命令都是平常工作中非常非常常用的。

tar 打包备份

1、简介

tar 可以将多个文件压缩打包、压缩。是工作中经常用到的命令

2、语法格式

tar [参数选项] [文件或目录]

3、参数说明

参数参数说明
z 通过gzip压缩或解压
c 创建新的tar包
v 显示详细的tar命令执行过程
f 指定压缩文件名字
t 不解压查看tar包的内容
p 保持文件的原有属性
j 通过bzip2命令压缩或解压
x 解开tar包
C 指定解压的目录路径
--exclude=PATTERN 打包时排除不需要处理的文件或目录
-h 打包软连接文件指向的真实源文件
-hard-dereference 打包硬链接文件

4、实践操作

① 打包博客文件(将/home/hexoBlog 打包成hexoBlog.tar.gz)

[root@xiezhr home]# tar zcvf hexoBlog.tar.gz hexoBlog
hexoBlog/
hexoBlog/page/
hexoBlog/page/3/
hexoBlog/page/3/index.html
hexoBlog/page/2/
hexoBlog/page/2/index.html
hexoBlog/contact/
hexoBlog/contact/index.html
hexoBlog/baidusitemap.xml
hexoBlog/movies/
hexoBlog/movies/index.html
hexoBlog/images/
hexoBlog/images/0.jpg
hexoBlog/images/2020年年终总结.jpg
hexoBlog/archives/
hexoBlog/archives/87a8e6ef.html
hexoBlog/archives/93a2b0e4.html
hexoBlog/archives/b55ad976.html
hexoBlog/archives/page/
hexoBlog/archives/page/3/

[root@xiezhr home]# ll 
drwxr-xr-x 30 git    git        4096 Jun  6 20:42 hexoBlog
-rw-r--r--  1 root   root   43478804 Jun 14 22:43 hexoBlog.tar.gz

② 不解压查看压缩包的内容

[root@xiezhr home]# tar ztvf hexoBlog.tar.gz 
drwxr-xr-x git/git           0 2022-06-06 20:42 hexoBlog/
drwxr-xr-x git/git           0 2022-02-26 16:43 hexoBlog/page/
drwxr-xr-x git/git           0 2022-06-03 14:57 hexoBlog/page/3/
-rw-r--r-- git/git       56427 2022-06-03 14:57 hexoBlog/page/3/index.html
drwxr-xr-x git/git           0 2022-06-03 14:57 hexoBlog/page/2/
-rw-r--r-- git/git       63574 2022-06-03 14:57 hexoBlog/page/2/index.html
drwxr-xr-x git/git           0 2022-06-03 14:57 hexoBlog/contact/
-rw-r--r-- git/git       43745 2022-06-03 14:57 hexoBlog/contact/index.html
-rw-r--r-- git/git        4169 2022-06-03 14:57 hexoBlog/baidusitemap.xml
drwxr-xr-x git/git           0 2022-06-03 14:57 hexoBlog/movies/
-rw-r--r-- git/git       43246 2022-06-03 14:57 hexoBlog/movies/index.html
drwxr-xr-x git/git           0 2021-02-13 19:32 hexoBlog/images/
-rw-r--r-- git/git      570852 2020-11-29 16:42 hexoBlog/images/0.jpg
-rw-r--r-- git/git      133945 2021-02-13 19:32 hexoBlog/images/2020年年终总结.jpg
drwxr-xr-x git/git           0 2022-06-06 20:42 hexoBlog/archives/
-rw-r--r-- git/git       97587 2022-06-03 14:57 hexoBlog/archives/87a8e6ef.html

③ 解压文件到指定目录

[root@xiezhr home]# tar -zxvf hexoBlog.tar.gz -C /home/test/
hexoBlog/
hexoBlog/page/
hexoBlog/page/3/
hexoBlog/page/3/index.html
hexoBlog/page/2/
hexoBlog/page/2/index.html
hexoBlog/contact/
hexoBlog/contact/index.html
hexoBlog/baidusitemap.xml
hexoBlog/movies/
hexoBlog/movies/index.html
hexoBlog/images/
hexoBlog/images/0.jpg
hexoBlog/images/2020年年终总结.jpg
hexoBlog/archives/
hexoBlog/archives/87a8e6ef.html

[root@xiezhr home]# cd /home/test/
[root@xiezhr test]# ll
total 1
drwxr-xr-x 30 git    git      4096 Jun  6 20:42 hexoBlog

④ 排除指定文件后打包

# hexoBlog/books 目录下的文件将被排除后打包
[root@xiezhr home]#  tar zcvf hexoBlog.tar.gz  hexoBlog --exclude=hexoBlog/books
hexoBlog/
hexoBlog/page/
hexoBlog/page/3/
hexoBlog/page/3/index.html
hexoBlog/page/2/
hexoBlog/page/2/index.html

⑤ 使用-h参数打包链接文件

[root@xiezhr etc]# tar zcfh local_h.tar.gz ./rc.local 
[root@xiezhr etc]# tar tfv local_h.tar.gz 
-rwxr-xr-x root/root       749 2022-03-22 09:10 ./rc.local

tar 使用小结

  • 打包一个目录时,一般需要进入到目录的上级目录,然后再执行打包命令。解压时需要非常注意,文件是否会覆盖原文件

  • 打包记忆:**tar zcvf /路径/篮子.tar.gz 相对路径/鸡蛋 ** 【把鸡蛋放到篮子里】

gzip 压缩或解压文件

1、简介

gzip 命令用于将一个大的文件通过压缩算法变成一个小文件。

注意: gzip 命令不能直接压缩目录,如果要压缩目录时,先要用tar 将目录打包成一个文件,然后tar 再调用gzip压缩

2、语法格式

gzip [参数选项] [文件]

3、参数说明

参数参数说明
-d 解压文件
-v 显示命令执行的过程
-l 列出压缩文件的内容信息
-c 将内容输出到标准输出,不改变原始文件
-r 对目录下的所有文件递归进行压缩
-数字<1-9> 指定压缩率,默认是6,值越大压缩率越高
-t 测试,检查压缩文件是否完整

4、实践操作

① 把目录下的每个文件都单独压缩成.gz文件

[root@xiezhr dir3]# ls
a.txt  b.txt  c.txt  money.java  test.java  test.txt  tt.txt  user.java  xiezhr.java  xiezhr.txt
[root@xiezhr dir3]# gzip *.txt
[root@xiezhr dir3]# ls
a.txt.gz  b.txt.gz  c.txt.gz  money.java  test.java  test.txt.gz  tt.txt.gz  user.java  xiezhr.java  xiezhr.txt.gz

② 不解压显示压缩文件信息

[root@xiezhr dir3]# gzip -l xiezhr.txt.gz 
         compressed        uncompressed  ratio uncompressed_name
                 31                   0   0.0% xiezhr.txt

③解压文件,并显示解压过程

[root@xiezhr dir3]# ls
a.txt.gz  b.txt.gz  c.txt.gz  money.java  test.java  test.txt.gz  tt.txt.gz  user.java  xiezhr.java  xiezhr.txt.gz
[root@xiezhr dir3]# gzip -dv *.gz
a.txt.gz:         0.0% -- replaced with a.txt
b.txt.gz:         0.0% -- replaced with b.txt
c.txt.gz:         0.0% -- replaced with c.txt
test.txt.gz:     15.9% -- replaced with test.txt
tt.txt.gz:        0.0% -- replaced with tt.txt
xiezhr.txt.gz:    0.0% -- replaced with xiezhr.txt
[root@xiezhr dir3]# ls
a.txt  b.txt  c.txt  money.java  test.java  test.txt  tt.txt  user.java  xiezhr.java  xiezhr.txt

注: 以上实践我们看到gzip命令在压缩和解压文件时,都会把源文件删除。当然也有其他方法可以解决这个问题,但是使用起来有点麻烦。

zip 打包和压缩文件

1、简介

zip 压缩格式是Windows和Linux通用的压缩格式。和gzip命令相比,zip命令压缩文件不会删除源文件,还可以压缩目录。所以相比gzip命令,我们使用zip命令会更多一些

2、语法格式

zip [参数选项] [文件或目录]

3、参数说明

参数参数说明
-r 指定目录下的所有文件和子目录一并压缩
-x 压缩文件时排除某个文件
-q 不显示压缩信息

4、实践操作

① 压缩文件

[root@xiezhr testdir]# ls
xiezhr.txt
[root@xiezhr testdir]# zip xiezhr.zip xiezhr.txt 
  adding: xiezhr.txt (deflated 17%)
[root@xiezhr testdir]# ls
xiezhr.txt  xiezhr.zip

②压缩目录

# 这里只将testdir这个目录压缩了,目录下的文件并没有压缩
[root@xiezhr test]# zip testdir.zip ./testdir/
  adding: testdir/ (stored 0%)
# 使用-r参数可以将目录及目录下的文件也递归压缩了
[root@xiezhr test]# zip -r testdir.zip ./testdir/
updating: testdir/ (stored 0%)
  adding: testdir/xiezhr.txt (deflated 17%)

③ 排除压缩

# 将abc.txt 文件排除到压缩之外
[root@xiezhr testdir]# ll
total 8
-rw-r--r-- 1 root root  49 Jun 26 16:01 abc.txt
-rw-r--r-- 1 root root 527 Jun 26 15:50 xiezhr.txt
[root@xiezhr testdir]# cd ..
[root@xiezhr test]# zip -r testdir.zip ./testdir/ -x testdir/abc.txt 
updating: testdir/ (stored 0%)
updating: testdir/xiezhr.txt (deflated 17%)xxxxxxxxxx -[root@xiezhr testdir]# lltotal 8-rw-r--r-- 1 root root  49 Jun 26 16:01 abc.txt-rw-r--r-- 1 root root 527 Jun 26 15:50 xiezhr.txt[root@xiezhr testdir]# cd ..[root@xiezhr test]# zip -r testdir.zip ./testdir/ -x testdir/abc.txt updating: testdir/ (stored 0%)updating: testdir/xiezhr.txt (deflated 17%)shell

unzip 解压zip文件

1、简介

unzip 命令可以解压zip格式的文件,一般与zip配套使用

2、语法格式

unzip [参数选项] [压缩文件]

3、参数选项

参数参数说明
-l 在不解压的情况下显示压缩包的内容
-o 解压时不提示是否覆盖文件
-d 指定解压目录
-v 解压时显示详细信息

4、实践操作

①不解压查看压缩包里的文件

[root@xiezhr test]# unzip -l testdir.zip 
Archive:  testdir.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  06-26-2022 16:01   testdir/
      527  06-26-2022 15:50   testdir/xiezhr.txt
---------                     -------
      527                     2 files

② 解压文件

# 不带参数解压文件时,会提示是否覆盖文件
# [y]es, [n]o, [A]ll, [N]one, [r]ename  
# y--是  n--否  A--所有文件都替换 N--所有文件都不替换 r--重命名
[root@xiezhr test]# unzip testdir.zip 
Archive:  testdir.zip
replace testdir/xiezhr.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: testdir/xiezhr.txt 
# -o 参数,解压时不提示覆盖
[root@xiezhr test]# unzip -o testdir.zip 
Archive:  testdir.zip
  inflating: testdir/xiezhr.txt 

③ 指定解压目录解压文件

# 将testdir.zip 解压到指定目录dir7下
[root@xiezhr test]# mkdir dir7
[root@xiezhr test]# unzip -d /home/test/dir7/ testdir.zip 
Archive:  testdir.zip
   creating: /home/test/dir7/testdir/
  inflating: /home/test/dir7/testdir/xiezhr.txt  
[root@xiezhr test]# cd dir7/
[root@xiezhr dir7]# ls
testdir

scp 远程文件复制

1、简介

scp 命令用于不同主机之间文件复制。scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时候使用,增量复制建议使用rsync命令

2、语法格式

scp [参数选择] [用户@主机1:文件1] [用户@主机2:文件2]

3、参数选项

参数参数说明
-C 压缩传输
-l 指定传输占用的宽带,单位Kbit/s
-P 指定传输的端口号
-p 传输后保留文件原始属性
-q 不显示传输进度
-r 递归复制整个目录

4、实践操作

① 将本地文件或目录复制到远程服务器

[root@xiezhr ~]# scp  /home/test/xie.txt  42.192.46.248:/tmp
root@42.192.46.248's password: 

② 从远程服务器将数据复制到本地

[root@xiezhr ~]# scp 42.192.21.248:/tmp .

rsync 文件同步工具

1、简介

rsync 可以实现全量或增量的文件复制的开源工具。 可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件 。 它也可以当作文件复制工具,替代cpmv命令

2、语法格式

# 1、本地模式
rsync [参数选项] [源文件] [目标文件]
# 2、远程同步模式
# 拉取文件
rsync [参数选项] [用户@主机:源文件] [目标文件]
# 推送文件
rsync [参数选项] [源文件] [用户@主机:目标文件]

3、参数选项

参数参数说明
-r 递归方式同步目录
-a 可以替代-r参数,除了可以递归同步,还可以同步文件属性(修改时间、权限等)
-n 不确定 rsync 执行后会产生什么结果,可以先用-n参数模拟执行结果
--delete 使目标目录内容和源保持目录一致,删除不同文件
--exclude 同步时,排除不需要的文件或目录
--include 同步时,必须包含的文件
   

4、实践操作

注: 有些Linux系统中可能没有默认安装rsync ,我们只需按照如下命令安装即可

yum -y install rsync

① 将当前目录下的hexoBlog 同步到 dir7目录下

[root@xiezhr test]# rsync -r hexoBlog/ dir7/hexoBlog
[root@xiezhr test]# cd dir7/
[root@xiezhr dir7]# ll
total 4
drwxr-xr-x 30 root root 4096 Jun 29 20:54 hexoBlog

② 将当前目录下的logo.png 和hexoBlog 同步到dir8/test 目录下

[root@xiezhr test]# rsync -r logo.png hexoBlog/  dir8/test
[root@xiezhr test]# cd dir8/test/
[root@xiezhr test]# ll
total 1420
drwxr-xr-x  2 root root   4096 Jun 29 21:00 about
drwxr-xr-x  6 root root   4096 Jun 29 21:00 archives
drwxr-xr-x  2 root root   4096 Jun 29 21:00 artitalk

注: -r表示递归,即包含子目录。注意,-r是必须的,否则 rsync 运行不会成功

③-a 参数,递归同步,同步修改时间、权限等信息

# rsync -a hexoBlog hexoBlog_new
# 目标目录hexoBlog_new 如果不存在,rsync 会自动创建。
# 执行上面的命令后,源目录hexoBlog被完整地复制到了目标目录hexoBlog_new下面,hexoBlog_new/hexoBlog的目录结构。

[root@xiezhr test]# ll
total 16
drwxr-xr-x  2 xiezhr xiezhr 4096 Mar 26 21:46 dir
drwxr-xr-x 30 git    git    4096 Jun  6 20:42 hexoBlog
-rw-r--r--  1 root   root     35 May  9 21:36 xie.txt
-rw-r--r--  1 root   root    527 Apr  9 10:55 xiezhr.txt
[root@xiezhr test]# rsync -a hexoBlog hexoBlog_new
[root@xiezhr test]# ll
total 20
drwxr-xr-x  2 xiezhr xiezhr 4096 Mar 26 21:46 dir
drwxr-xr-x 30 git    git    4096 Jun  6 20:42 hexoBlog
drwxr-xr-x  3 root   root   4096 Jul  2 09:15 hexoBlog_new
-rw-r--r--  1 root   root     35 May  9 21:36 xie.txt
-rw-r--r--  1 root   root    527 Apr  9 10:55 xiezhr.txt

#如果只想同步源目录 hexoBlog 里面的内容到目标目录hexoBlog_new,则需要在源目录后面加上斜杠。
[root@xiezhr test]# rsync -a hexoBlog/ hexoBlog_new
#上面命令执行后,hexoBlog目录里面的内容,就都被复制到了hexoBlog_new目录里面,并不会在hexoBlog_new下面创建一个hexoBlog子目录。

④ -n参数模拟执行结果

注: 如果不确定 rsync 执行后会产生什么结果,可以先用-n 参数模拟执行结果

[root@xiezhr test]# rsync -anv xie.txt testdir
sending incremental file list
xie.txt

sent 49 bytes  received 19 bytes  136.00 bytes/sec
total size is 35  speedup is 0.51 (DRY RUN)

# -n参数模拟命令执行的结果,并不真的执行命令。-v参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。

⑤ --delete 参数的使用,保持源目录和目标目录文件一致

[root@xiezhr test]# rsync -av --delete hexoBlog hexoBlog_0702
sending incremental file list
created directory hexoBlog_0702
hexoBlog/
hexoBlog/Staticfile.txt
hexoBlog/baidu_urls.txt
hexoBlog/baidusitemap.xml
hexoBlog/favicon.png
hexoBlog/tags/问卷调查/index.html

sent 63,638,655 bytes  received 8,246 bytes  42,431,267.33 bytes/sec
total size is 63,597,216  speedup is 1.00

注: 默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。

⑥ --exclude 参数 的使用,同步时排除某些文件

[root@xiezhr test]# rsync -av --exclude '*.txt' hexoBlog hexoBlog_test
sending incremental file list
created directory hexoBlog_test
hexoBlog/
hexoBlog/baidusitemap.xml
hexoBlog/favicon.png
hexoBlog/favicon1.png
hexoBlog/tags/问卷调查/index.html

sent 63,638,026 bytes  received 8,208 bytes  127,292,468.00 bytes/sec
total size is 63,596,717  speedup is 1.00

注: 上面脚本将hexoBlog 目录下除了.txt外的文件都同步到了hexoBlog_test 目录下

--include 参数的使用,同步时必须包含某些文件

[root@xiezhr test]# rsync  -av --include "*.txt" --exclude "*" hexoBlog hexo_xie
sending incremental file list

sent 18 bytes  received 12 bytes  60.00 bytes/sec
total size is 0  speedup is 0.00

注:上述命令将hexoBlog目录下的所有文件排除,但包含txt文件同步到hexo_xie目录下

⑧远程同步资源

注: rsync 命令除了可以本地同步之外,还支持远程同步资源

# 以下命令是将本地资源source 同步到远程服务器destination
[root@xiezhr test]# rsync -av source/ username@remote_host:destination
# 以下命令是将远程服务器资源source同步到本地 destination
[root@xiezhr test]# rsync -av username@remote_host:source/ destination

由于博主比较穷,手上只有一台云服务器,这里就没法做具体演示了🙁

⑨增量备份

[root@xiezhr test]# rsync -a --delete --link-dest /compare/path /source/path /target/path

上述命令解释

  • --link-dest参数指定基准目录/compare/path

  • /source/path 代表源目录

  • /target/path 代表目标目录

  • 命令的第一次备份时是全量备份,后面 源目录/source/path跟基准目录/compare/path 进行比较,找出变动的文件,将它们拷贝到目标目录/target/path 实现增量更新

注: 上面命令可以写成shell脚本,然后添加到Linux任务调度里,就实现了增量备份文件的功能。

关于rsync命令小结

  • rsync 用法很多,所以上面说了好多常用例子,当然还有很多用法没法一一例举出来。
  • rsync 不仅用于Linux,也同样可以再Windows上使用,用于文章上关于Linux的,所以没列举Windows上使用方法。感兴趣的小伙伴可自行查找资料,或者后面出一篇文章具体介绍
  • 关于rsync命令的用法,阮一峰大佬也写了一篇文章,讲的也非常好。大家可以去看看,文章地址:https://www.ruanyifeng.com/blog/2020/08/rsync.html

这期主要是说了Linux系统文件备份与压缩相关命令,大概内容就这些了。下期根据思维导图就到了 软件安装相关 的命令了。

涉及到的命令有: rpm、 yum两个命令

这些命令呢比较基础,但也是比较常用比较重要的

敬请期待哦(●’◡’●)

专栏目录:快速上手Linux核心命令专栏目录

上一篇:快速上手Linux核心命令(七):Linux系统信息相关命令x
下一篇:快速上手Linux核心命令(十):软件安装命令(博主正在玩命更新中)

 
 

快速上手Linux核心命令(十):Linux安装软件

 

 

 

前言

这期呢主要说一说Linux中包软件管理相关命令,这一期的命令虽然只有两个。但 软件包的安装和卸载都是我们平常最常用的,需要熟练掌握。

rpm和yum 是CentOS 主要的包软件管理。

两个命令各有用处,①yum需要互联网,yum会去网上的yum源获取所需的软件包

② rpm 操作相对复杂,需要我们做得更多

rpm rpm包管理器

1、简介

rpm 命令包含了安装、卸载、升级、查询和验证5个基本功能

2、语法格式

rpm [参数选项]

3、参数选项

参数参数说明
-q 查询软件包
-p 后面接“.rpm”为后缀的软件包
-i ①与-qp配合使用,表示显示软件包的概要信息 info
②安装软件包 install
-l 显示软件包种所有文件列表
-R 显示软件包依赖环境
-v 显示详细信息
-h 用“#” 显示安装进度条
-a 与-q参数搭配使用,用于查询所有的软件包
-e 卸载软件包
-f 查询文件或命令属于哪个软件包
-U 升级软件包

4、 实践操作

我们下载一个rpm包telnet-server-0.17-66.el7.x86_64.rpm作为后续实践操作文件

[root@xiezhr test]# wget https://mirrors.aliyun.com/centos/7.9.2009/updates/x86_64/Packages/telnet-server-0.17-66.el7.x86_64.rpm
--2022-08-02 22:47:29--  https://mirrors.aliyun.com/centos/7.9.2009/updates/x86_64/Packages/telnet-server-0.17-66.el7.x86_64.rpm
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 101.226.26.240, 101.226.26.241, 101.226.26.242, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|101.226.26.240|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 42148 (41K) [application/octet-stream]
Saving to: ‘telnet-server-0.17-66.el7.x86_64.rpm’

100%[========================================================================================================================================================================>] 42,148      --.-K/s   in 0.01s   

2022-08-02 22:47:29 (3.70 MB/s) - ‘telnet-server-0.17-66.el7.x86_64.rpm’ saved [42148/42148]

① 查看rpm包信息

[root@xiezhr test]# rpm -qpi telnet-server-0.17-66.el7.x86_64.rpm
Name        : telnet-server
Epoch       : 1
Version     : 0.17
Release     : 66.el7
Architecture: x86_64
Install Date: (not installed)
Group       : System Environment/Daemons
Size        : 56361
License     : BSD
Signature   : RSA/SHA256, Wed 18 Nov 2020 10:20:43 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : telnet-0.17-66.el7.src.rpm
Build Date  : Tue 17 Nov 2020 12:44:28 AM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://web.archive.org/web/20070819111735/www.hcs.harvard.edu/~dholland/computers/old-netkit.html
Summary     : The server program for the Telnet remote login protocol
Description :
Telnet is a popular protocol for logging into remote systems over the
Internet. The package includes a daemon that supports Telnet remote
logins into the host machine. The daemon is disabled by default.
You may enable the daemon by editing /etc/xinetd.d/telnet

② 查看rpm包内容

[root@xiezhr test]# rpm -qpl telnet-server-0.17-66.el7.x86_64.rpm
/usr/lib/systemd/system/telnet.socket
/usr/lib/systemd/system/telnet@.service
/usr/sbin/in.telnetd
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz

③ 查看rpm包的依赖环境

[root@xiezhr test]# rpm -qpR telnet-server-0.17-66.el7.x86_64.rpm 
/bin/sh
/bin/sh
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.16)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.8)(64bit)
libutil.so.1()(64bit)
libutil.so.1(GLIBC_2.2.5)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
systemd
systemd
systemd
systemd
rpmlib(PayloadIsXz) <= 5.2-1

④ 安装rpm 包(参数h 以“#”显示进度条)

[root@xiezhr test]# rpm -ivh telnet-server-0.17-66.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:telnet-server-1:0.17-66.el7      ################################# [100%]

⑤ 查询是否安装指定的rpm包

[root@xiezhr test]# rpm -qa telnet-server
telnet-server-0.17-66.el7.x86_64

⑥ 卸载rpm 包

# 卸载刚才安装的telnet-server 
[root@xiezhr test]# rpm -e telnet-server 
# 再次查看rpm包,已经没有了,说明卸载成功了
[root@xiezhr test]# rpm -qa telnet-server

yum 自动化RPM包管理工具

1、简介

yum 命令主要用于自动安装升级rpm软件包,需要连接互联网

2、语法格式

yum [参数选项] [指令] [软件包]

3、常用参数

参数参数说明
-y 确认操作
-q 不输出信息
-v 显示详细信息

4、常用指令

指令指令说明
yum install softwarename 安装softwarename包
yum repolist 列出启用的yum源
yum repolist all 列出所有yum,包括禁用的yum源
yum remove softwarename 卸载softwarename包
yum list softwarename 查看软件源中是否有此软件
yum list all 列出所有软件名称
yum list installd 列出已经安装的软件名称
yum list available 列出可以用yum安装的软件名称
yum clean all 清空yum缓存
yum search softwarename 根据软件信息搜索软件名字
yum whatprovides filename 在yum源中查找包含filename文件的软件包
yum update 更新软件
yum history 查看系统软件改变历史
yum reinstall softwarename 重新安装
yum info softwarename 查看软件信息
yum groups list 查看软件组信息
yum groups info softwaregroup 查看软件组内包含的软件
yum groups install softwaregroup 安装组件

5、实践操作

① 安装httpd包

[root@xiezhr ~]# yum install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel                         | 4.7 kB  00:00:00     
extras                       | 2.9 kB  00:00:00     
nodesource                   | 2.5 kB  00:00:00     
os                           | 3.6 kB  00:00:00     
updates                      | 2.9 kB  00:00:00     
(1/4): epel/7/x86_64/group_gz          |  97 kB  00:00:00     
(2/4): epel/7/x86_64/updateinfo        | 1.1 MB  00:00:00     
(3/4): epel/7/x86_64/primary_db        | 7.0 MB  00:00:01     
(4/4): updates/7/x86_64/primary_db  
...

② 查看yum源中是否是否有此软件

[root@xiezhr ~]# yum list telnet-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
telnet-server.x86_64                   1:0.17-66.el7                    updates

③ 清空yum 缓存

[root@xiezhr ~]# yum    clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: epel extras nodesource os updates

这期内容就到这,下期根据思维导图就到Linux用户相关命令的使用了。

涉及到的命令有: useradd、usermod、userdel、groupadd、groupdel、su、passwd等等

敬请期待哦(●’◡’●)

专栏目录:快速上手Linux核心命令专栏目录

上一篇:快速上手Linux核心命令(九):文件备份与压缩
下一篇:快速上手Linux核心命令(十一):Linux用户相关命令

 
 

快速上手Linux核心命令(十一):Linux用户相关命令

 

Linux用户相关命令
前言
useradd 创建用户
usermod 修改用户信息
userdel 删除用户
groupadd 创建新的用户组
groupdel 删除用户组
passwd 修改用户密码
chage 修改用户密码有效期
批量更新用户密码
su 切换用户
visudo 编辑sudoers文件
sudo 以另一个用户身份执行命令
id 显示用户与用户组信息
w 显示已登录用户信息
显示已登录用户信息
users 显示已登录用户
whoami 显示当前登录的用户
last 显示用户登录列表
lastb 显示用户登录失败的记录
lastlog 显示所有用户最近登录记录
前言
上一篇中已经预告,我们这篇主要说一说Linux中用户相关的命令。
可能各位小伙伴用的Windows会比较多一点,在Windows操作系统中,我们知道有Administrator用户,Administrator 是Windows系统中的管理员用户,有着最高的权限。
用户登录Administrator后可以创建Gust等用户,修改密码并且给Gust用户分配相应的权限。
同样的在Linux中,root就相当于Administrator用户,具有着最高权限。登录root 用户可以创建用户、修改用户密码、给用户分配角色等等。
下面思维导图中列出了我们需要掌握的19个命令


useradd 创建用户
1、简介

useradd 命令用户创建新的用户或者更改用户信息

2、原理


3、语法格式

useradd [参数选项] [用户名]

useradd -D [参数选项]
1
2
3
4、参数说明
① 不加选项-D参数

参数选项 参数说明
-c comment 加上备注信息,会保存到passwd备注栏中(第五列)
-d home_dir 新用户每次登录时使用的家目录
-e expire_date 用户终止日期
-f inactive_days 用户过期几日后永久停权
-g initial_group 指定用户对应的用户组。用户组必须是系统现在已存在的名词
-G group,[…] 定义此用户为多个不同组的成员。每个用户组使用逗号(,)分割
-m 用户目录如不存在则自动建立
-M 不建立家目录,优先于、etc/login.defs文件设定。【创建虚拟用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户】
-n 默认情况下用户的用户组和用户名称是相同的。通过该参数,就不会生成与用户名一样的用户组了
-s shell 用户登录后使用的Shell名称。默认不填写,系统会使用配置文件(/etc/default/useradd)中的预设值
-u uid 用户ID值。这个值是唯一的
② 加-D选项参数

参数选项 参数说明
-b defalut_home 定义用户家目录的基本目录,当用户家目录不存在时,此目录将作为家目录生效
-e defalut_expire_date 用户账号停止日期
-f defalut_inactive 用户过期几日后停权
-g defalut_group 新用户起始用户组名或ID。用户组名必须为现已存在的名称
-s default_shell 用户登录后使用Shell名称
5、实践操作
① 不加任何参数添加用户

# 创建xiezhrspace 用户
[root@xiezhr ~]# useradd xiezhrspace
# /home/ 路径下新生成一个xiezhrspace 目录。这个就是xiezhrspace用户的家目录
[root@xiezhr ~]# ls -ld /home/xiezhrspace
drwx------ 2 xiezhrspace xiezhrspace 4096 Aug 29 23:05 /home/xiezhrspace
1
2
3
4
5
在前面我们说过创建一个新用户会在/etc/shadow、/etc/group 和/etc/gshsdow 文件中生成相关信息,具体是不是这样的呢?
我们去看一看(●’◡’●)

# 在创建用户时候没有指定密码,但是shadow还是生成了一行信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/shadow
xiezhrspace:!!:19233:0:99999:7:::

# 创建用户时,默认会创建与用户名同名的用户组
[root@xiezhr ~]# grep -w xiezhrspace /etc/group
xiezhrspace:x:1002:

#组密码文件中也会增加一条信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/gshadow
xiezhrspace:!::
1
2
3
4
5
6
7
8
9
10
11
② 创建一个组,并将新建用户归于这个组

# 创建一个gid 为808 的用户组
[root@xiezhr ~]# groupadd -g 808 xiezhrgroup
# 创建一个uid为908的用户xietest,并将用户归于xiezhrgroup组
[root@xiezhr ~]# useradd -g xiezhrgroup -u 908 xietest
# 查看用户信息
[root@xiezhr ~]# id xietest
uid=908(xietest) gid=808(xiezhrgroup) groups=808(xiezhrgroup)
1
2
3
4
5
6
7
③ -M -s参数的使用(在生产环境中部署Nginx、MySQL等服务经常使用)

# -M 不创建见目录
# -s 指定登录后的Shell
# /sbin/nologin 表示禁止登陆
[root@xiezhr ~]# useradd -M -s /sbin/nologin xiaofang
[root@xiezhr ~]# ls -ld /home/xiaofang
ls: cannot access /home/xiaofang: No such file or directory
[root@xiezhr ~]# grep -w xiaofang /etc/passwd
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin
1
2
3
4
5
6
7
8
/etc/passwd 文件说明

xiaofang x 1003 1003 /home/xiaofang /sbin/nologin
用户名称 账号密码 账号UID 账号组GID 用户说明 用户家目录 shell解释器
usermod 修改用户信息
1、简介

usermod 命令用于修改系统已经存在的用户账号信息

2、语法格式

usermod [参数选项] [用户名]
1
3、参数选项

参数 参数说明
-c comment 修改用户password文件中用户的说明栏,与useradd -c 功能相同
-d home_dir 修改用户的家目录 与useradd -d 功能相同
-e expire_date 修改用户终止日期 与useradd -e 功能相同
-f inactive_days 修改用户过期后几日永久停权 与useradd -f 功能相同
-g initial_group 修改用户对应的用户组 与useradd -g 功能相同
-G group,[…] 修改此用户为多个不同组的成员 与useradd -G功能相同
-m 用户目录如果不存在则自动建立
-M 不建立用户家目录。一般创建虚拟用户时不建立家目录。不是nginx、redis等服务是需要创建虚拟用户
-n 默认情况下,用户的用户组与用户的名称相同
-s shell 修改用户登入后使用的Shell名称 与useradd -s 功能相同
-u uid 修改用户的ID值 与useradd -u 功能相同
-a 追加用户到用户组 仅与-G参数连用
-l 修改用户账号名称
-L 锁定用户密码,不让用户改密码
-U 解除密码锁定
4、实践操作
将前面创建的xiezhr 用户的用户注释修改为“测试用户”,UID 修改为888,归属修改为用户组root、xiezhr 成员,其Shell类型为/sbin/nologin,设置家目录为/home/xiezhr 用户过期时间为2022-10-02 ,过期后15天停权

[root@xiezhr ~]# usermod -u 888 -s /sbin/nologin -c "测试用户" -G root -e "2022/10/02" -f 30 -d /home/xiezhr xiezhr
[root@xiezhr ~]# grep -w xiezhr /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
[root@xiezhr ~]# id xiezhr
uid=888(xiezhr) gid=1001(xiezhr) groups=1001(xiezhr),0(root)
[root@xiezhr ~]# grep -w xiezhr /etc/shadow
xiezhr:!!:19233:0:99999:7:30:19267:
[root@xiezhr ~]# chage -l xiezhr
Last password change : Aug 29, 2022
Password expires : never
Password inactive : never
Account expires : Oct 02, 2022
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
userdel 删除用户
1、简介

userdel 命令用户删除指定的用户及与该用户相关的文件

2、语法格式

userdel [参属选项] [用户名]
1
3、参数选项

参数 参数说明
-f 强制删除用户,即使用户当前登录
-r 删除用户的同时,删除与用户相关的所有文件
4、实践操作
① 不加参数删除用户

[root@xiezhr home]# tail -4 /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
xiezhrspace:x:1002:1002::/home/xiezhrspace:/bin/bash
xietest:x:908:808::/home/xietest:/bin/bash
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 xietest xiezhrgroup 4096 Aug 29 23:16 /home/xietest/
[root@xiezhr home]# userdel xietest
[root@xiezhr home]# grep -w xietest /etc/passwd
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 908 xiezhrgroup 4096 Aug 29 23:16 /home/xietest/
1
2
3
4
5
6
7
8
9
10
11
② 加 -r 参数删除用户及加目录

[root@xiezhr home]# ls -ld /home/xiezhr001/
drwx------ 2 xiezhr001 xiezhr001 4096 Sep 4 19:50 /home/xiezhr001/
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
xiezhr001:x:1005:1005::/home/xiezhr001:/bin/bash
[root@xiezhr home]# userdel -r xiezhr001
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
[root@xiezhr home]# ls -ld /home/xiezhr001/
ls: cannot access /home/xiezhr001/: No such file or directory
1
2
3
4
5
6
7
8
注意

在实际工作中,尽量不要使用userdel删除用户,只需要在/etc/passwd里注释用户就可以了。
在使用**-r**参数一定要慎重,-r参数会将家目录下所有文件和目录都删除,该过程是不可逆的
groupadd 创建新的用户组
1、简介

groupadd 用于创建新的用户组。实际工作中一般也不用,因为useradd命令在创建用户的时候也会创建一个同名的用户组

2、语法格式

groupadd [参数选项] [用户组]
1
3、参数选项

参数 参数说明
-g gid 指定用户组的gid,除非接-o参数,否则ID值唯一且不为负,如果不指定-g参数,则gid从500开始
-f 新增一个账户,强制覆盖一个已存在的组账号
4、实践操作
指定gid添加用户组

# 添加GID为123的test1用户组
[root@xiezhr ~]# groupadd -g 123 test
[root@xiezhr ~]# tail -l /etc/group
test:x:123:
[root@xiezhr ~]# tail -l /etc/gshadow
test:!::
1
2
3
4
5
6
groupdel 删除用户组
1、简介

groupdel 命令用户删除指定的用户组,一般不用

2、语法格式

groupdel [用户组]
1
3、实践操作
删除test用户组

[root@xiezhr ~]# groupdel test
[root@xiezhr ~]# grep -w test /etc/group
1
2
passwd 修改用户密码
1、简介

passwd 命令用于修改用户密码及密码过期使劲啊等,工作中会经常用到。
普通用户和超级用户都可以运行passwd命令,普通用户只能更改自身密码,超级用户root则可以设置或修改所有用户的密码

2、语法格式

passwd [参数选项] [用户名]
1
3、参数选项

参数 参数说明
-k 为密码已经过期的用户更新有效期
-l 锁定用户,被锁定的用户不能登录。仅root用户有此权限
–stdin 从标准输入读取密码字符串
-u 解除对用户的锁定,仅root用户有此权限
-d 删除用户密码,使密码为空。仅root用户有此权限
-e 是用户密码立即过期,将用户下次登录时强制要求用户修改密码。仅root用户有此权限
-n 设置修改该密码的最短天数 。仅root用户有此权限
-x 设置修改密码的最长天数。仅root用户有此权限
-w 设置用户在密码过期前收到警告信息的天数。仅root用户有此权限
-i 设置密码过期多少天后禁用账户。仅root用户有此权限
-S 显示用户密码相关的简单描述。仅root用户有此权限
4、实践操作
① 修改用户自身密码

[root@xiezhr ~]# passwd # 修改root用户自身密码
Changing password for user root.
New password: # 输入修改的密码,系统不会显示
Retype new password: # 再次输入密码
passwd: all authentication tokens updated successfully. # 设置成功了
1
2
3
4
5
② 设置及修改普通用户密码

[root@xiezhr ~]# passwd xiezhr
Changing password for user xiezhr.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
1
2
3
4
5
6
③ 显示账号密码信息

[root@xiezhr ~]# passwd -S xiezhr
xiezhr PS 2022-09-05 0 99999 7 30 (Password set, MD5 crypt.)
1
2
④一条命令修改密码

[root@xiezhr ~]# echo "123456"|passwd --stdin xiezhr
Changing password for user xiezhr.
passwd: all authentication tokens updated successfully.
1
2
3
⑤ 设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知用户,过期30天后禁止用户登录

[root@xiezhr ~]# passwd -n 7 -x 60 -w 10 -i 30 xiezhr
Adjusting aging data for user xiezhr.
passwd: Success
1
2
3
chage 修改用户密码有效期
1、简介

chage 命令用于查看或修改用户密码有效期

2、语法格式

chage [参数选项] [用户名]
1
3 、参数选项

参数 参数说明
-d 设置上一次密码更改的日期
-E 账号过期的日期。日期格式:YYYY-MM-DD
-I 设置密码过期多少天后禁用账户
-l 显示账号有效期信息
-m 密码可更改的最小天数。默认为0,即任何时候都可以修改
-M 密码保持有效的最大天数
-W 密码到期前,提前收到警告信息天数
4、实践操作
设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知xiezhr 用户,过期30天后禁止用户登录

[root@xiezhr ~]# chage -m 7 -M 60 -W 10 -I 30 xiezhr
1
批量更新用户密码
1、简介

chpasswd 命令用于从标准输入中读取一定格式的用户名、密码来批量更新用户的密码,格式为“用户名:密码“

2、语法格式

chpasswd [参数选项]
1
3、参数选项

参数 参数说明
-c 默认格式是明文密码,使用-e参数则需要加密的密码
4、实践操作
批量修改密码

[root@xiezhr ~]# chpasswd # 输入chpasswd后,回车
xiezhr:123456 # 格式为用户名:密码
testxiezhr:123456 # 一行一个
# 新行按Ctrl+D 结束
1
2
3
4
su 切换用户
1、简介

su 命令用户将当前用户切换到指定用户或以指定用户的身份执行命令或程序

2、语法格式

su [参数选项] [用户名]
1
3、参数选项

参数 参数说明
-, -l, --login 切换用户的同时,将用户的家目录/系统环境等重新按切换后的用户初始化
-c 向Shell 传递单个命令
4、实践操作
① 切换到普通用户

# 切换到testxiezhr用户,不用输入密码即可切换
[root@xiezhr ~]# su - testxiezhr
1
2
②切换到root用户

# 虽然已经切换到了root用户,但是家目录还是testxiezhr。环境变量还是testxiezhr用户的,**这种切换问题很严重**
[testxiezhr@xiezhr ~]$ su root
Password: # 普通用户切换到root用户需要输入密码
[root@xiezhr testxiezhr]# pwd
/home/testxiezhr
# 正确切换方式
[root@xiezhr testxiezhr]# exit
exit
[testxiezhr@xiezhr ~]$ su - root
Password: # 需要输入密码
Last login: Mon Sep 5 21:13:39 CST 2022 on pts/3
[root@xiezhr ~]# pwd
/root
1
2
3
4
5
6
7
8
9
10
11
12
13
注意:
[x] “su 用户名” 虽然能切换到对应用户,但切换后的环境变量信息还是切换之前用户的
[√] ** ”su - 用户名“ 不但可以切换到对应用户,还能将环境变量一起切换**

visudo 编辑sudoers文件
1、简介

visudo命令是专门用来编辑 /etc/sudoers这个文件的,同时提供语法检查等功能。 /etc/sudoers文件是sudo命令的配置文件。sudo命令在下一个命令你会看到。而为什么不用vi/vim来直接编辑/etc/sudoers文件呢? 因为如果使用vim 编辑sudoer文件时没有语法校验,编辑错了会导致授权无法生效

2、语法格式

visudo [参数选项]
1
3、参数选项

参数 参数说明
-c 手动执行语法检查
4、实践操作
①将xiezhr用户提权为root身份,testxiezhr 用户具有添加和删除用户的权限

# 以下命令相当于 vim /etc/sudoers 进行编辑sudoers文件
[root@xiezhr ~]# visudo

#在/etc/sudoers 文件中添加如下权限
xiezhr ALL=(ALL) ALL # 此行时将xiezhr用户提权为root身份
testxiezhr ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel # 授予可以以root身份添加和删除用户权限
1
2
3
4
5
6
上面操作说明

待授权的用户或组 机器=(授权角色) 可以执行的命令
testxiezhr ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
② 通过-c参数校验语法是否正确
通过① 我们已经对xiezhr用户和testxiezhr用户做了不同的授权,那么怎么判断授权的语法是否正确呢

[root@xiezhr ~]# visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/90-cloud-init-users: parsed OK
1
2
3
直接root用户下操作不就可以了么?为什么要通过sudo授权呢?
我们希望一个用户具有root权限去干活,但是又不希望这个用户威胁系统安全。

sudo 以另一个用户身份执行命令
1、简介

sudo 命令可以让普通用户拥有超级用户的权限去执行指定的命令或程序。普通用户不需要知道root密码就可以得到授权,授权我们在上面已经说过

2、语法格式

sudo [参数选项]
1
3、参数选项

参数 参数说明
-l 列出当前用户可以执行的命令。只有在sudoers 文件里的用户才能使用该选项
-h 列出使用方法,并退出
-H 将环境变量中的HOME(家目录)指定为要变更身份的使用者家目录
-V 显示版本信息,并退出
-v sudo在第一次执行时,或者在N分钟内没有执行,则会询问密码,参数用于重新做一次确认
-u 以指定用户的身份执行命令
-k 清除时间戳上的实践,下次再次使用sudo时要再此输入密码
-K 与k类似,同时还删除时间戳文件
-b 在后台执行指定命令
-p 更改询问密码时的提示语
-e 不执行命令,而是修改文件,相当于sudo edit
4、sudo 工作原理


5、实践操作
创建一个testuser 用户,并对testuser进行sudo授权管理。授权完成后sudo操作

# 1、创建testuser 用户
[root@xiezhr ~]# useradd testuser
# 2、将testuser 用户密码修改为******
[root@xiezhr ~]# passwd testuser
Changing password for user testuser.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# 3、执行以下命令后添加 `testuser ALL=(ALL) ALL ` 对testuser用户进行sudo授权 参照下图
[root@xiezhr ~]# visudo
testuser ALL=(ALL) ALL
# 4、登录testuser 用户,查看 当前用户被授予的sudo权限集合
[testuser@xiezhr ~]$ sudo -l
Matching Defaults entries for testuser on xiezhr:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User testuser may run the following commands on xiezhr:
(ALL) ALL

# 5、登录testuser用户,执行ls /root 发现时没有权限的
[testuser@xiezhr ~]$ ls /root
ls: cannot open directory /root: Permission denied
# 6、当加上sudo 后 再执行ls /root (第一次需要输入testuser用户密码,上面原理图介绍过),发现可以访问/root 路径了,此时testuser 具有了
[testuser@xiezhr ~]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for testuser:
bdcdb84c414c2493e5856597b89be9f0.gif
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
6、 sudo 小结

对用户进行sudo授权后,所有用户执行命令 格式为 sudo + [命令]
sudo - l 命令可以查看当前用户被授予的sudo权限集合
当我们在授权用户下执行sudo时,如果需要输入密码。此时输入密码是当前用户的密码
id 显示用户与用户组信息
1、简介

id 命令可以显示指定用户的ID(UID)和组ID(GID)等有效信息

2、语法格式

id [参数选项] [用户名]
1
3、参数选项

参数 参数说明
-g 显示用户所属群组的ID
-G 显示用户所属附加群组的ID
-n 显示用户,所属群组或附加群组的名称
-r 显示实际ID
-u 显示用户ID
4、实践操作
显示用户的UID和GID

# id 后不跟用户,默认时当前登录用户
[root@xiezhr home]# id
uid=0(root) gid=0(root) groups=0(root)
# 显示指定用户信息
[root@xiezhr home]# id testxiezhr
uid=1006(testxiezhr) gid=1006(testxiezhr) groups=1006(testxiezhr)
# 显示当前登录用户名称
[root@xiezhr home]# id -gn
root
# 显示当前登录用户GID
[root@xiezhr home]# id -g
0
# 显示当前登录用户UID
[root@xiezhr home]# id -u
0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
w 显示已登录用户信息
1、简介

w命令可以显示已经登录系统的用户,并显示用户正在执行的命令

2、语法格式

w [参数选项] [用户]
1
3、参数选项

参数 参数说明
-h 不显示前两行标题信息
-u 忽略执行程序的名称以及CPU时间信息
-s 使用短输出格式
4、实践操作
① 显示已登录用户信息

[testuser@xiezhr ~]$ w
21:21:42 up 609 days, 7 min, 4 users, load average: 2.66, 2.99, 3.17
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 39.130.60.62 20:33 48:22 0.02s 0.02s -bash
root pts/1 39.130.60.62 20:55 13:10 0.07s 0.02s -bash
root pts/2 39.130.60.62 21:04 16:54 0.02s 0.02s -bash
root pts/3 39.130.60.62 21:21 6.00s 0.04s 0.00s w
1
2
3
4
5
6
7
w命令执行结果说明

第一行依次显示当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载
列名 含义
USER 登录系统的用户
TTY 用户使用的TTY名称
FROM 用户从哪里登录进来,一般显示远程登录主机的IP地址或主机名
LOGIN@ 用户登录的日期和时间
IDLE 显示终端空闲的时间
JCPU 表示该终端上的所有进程及子进程使用系统的总时间
PCPU 当前活动进程使用的系统时间
WHAT 当前用户执行的进程名称和选项
② -h 参数

[root@xiezhr ~]# w -h
root pts/0 39.130.60.62 20:33 1:04m 0.02s 0.02s -bash
root pts/1 39.130.60.62 20:55 28:55 0.07s 0.02s -bash
root pts/2 39.130.60.62 21:04 32:39 0.02s 0.02s -bash
root pts/3 39.130.60.62 21:21 15:51 0.04s 0.02s -bash
root pts/4 39.130.60.62 21:37 3.00s 0.02s 0.00s w -h
1
2
3
4
5
6
显示已登录用户信息
1、简介

who 命令用于显示已经登录系统的用户,以及系统的启动时间等信息

2、语法格式

who [参数选项]
1
3、参数选项

参数 参数说明
-a 显示所有信息
-b 显示系统启动时间
-d 显示已结束的进程
-H 显示标题,默认是不显示的
-l 显示登录进程
4、实践操作
① 不带参数显示所有信息

[root@xiezhr ~]# who
root pts/0 2022-09-11 20:33 (39.130.60.62)
root pts/1 2022-09-11 20:55 (39.130.60.62)
root pts/2 2022-09-11 21:04 (39.130.60.62)
root pts/3 2022-09-11 21:21 (39.130.60.62)
root pts/4 2022-09-11 21:37 (39.130.60.62)
root pts/5 2022-09-11 22:19 (39.130.60.62)
1
2
3
4
5
6
7
② 显示系统启动时间

[root@xiezhr ~]# who -b
system boot 2021-01-10 21:14
1
2
③ 显示已结束的进程

[root@xiezhr ~]# who -d
1
④ 显示标题

[root@xiezhr ~]# who -H
NAME LINE TIME COMMENT
root pts/0 2022-09-11 20:33 (39.130.60.62)
root pts/1 2022-09-11 20:55 (39.130.60.62)
root pts/2 2022-09-11 21:04 (39.130.60.62)
root pts/3 2022-09-11 21:21 (39.130.60.62)
root pts/4 2022-09-11 21:37 (39.130.60.62)
root pts/5 2022-09-11 22:19 (39.130.60.62)
1
2
3
4
5
6
7
8
⑤ 显示带标题的所有信息

[root@xiezhr ~]# who -H -a
NAME LINE TIME IDLE PID COMMENT EXIT
system boot 2021-01-10 21:14
run-level 3 2021-01-10 21:14
LOGIN ttyS0 2021-01-10 21:14 1009 id=tyS0
LOGIN tty1 2021-01-10 21:14 1008 id=tty1
root + pts/0 2022-09-11 20:33 01:50 23396 (39.130.60.62)
root + pts/1 2022-09-11 20:55 01:15 27638 (39.130.60.62)
root + pts/2 2022-09-11 21:04 01:19 29660 (39.130.60.62)
root + pts/3 2022-09-11 21:21 01:02 405 (39.130.60.62)
root + pts/4 2022-09-11 21:37 00:46 3587 (39.130.60.62)
root + pts/5 2022-09-11 22:19 . 11675 (39.130.60.62)
1
2
3
4
5
6
7
8
9
10
11
12
以上显示的各项含义

名称 [状态] 线路 时间 [活动] [进程标识] (主机名)

列名 说明
NAME 名称: 用户登录名
状态:表示线路对用户是否都是可写的
LINE 线路: pts/0 pts/1等等
TIME 时间:用户登录系统的时间
IDLE 活动:某用户最后一次活动到现在的时间;. 表示一分钟内线路活动
PID 进程表示:用户进程id
COMMENT 主机名
users 显示已登录用户
1、简介

users 命令用于显示已经登录的用户。一个用户登录多次则会显示多次

2、实践操作

[root@xiezhr ~]# users
root root root root root root
1
2
whoami 显示当前登录的用户
1、简介

whoami 命令用于显示当前登录的用户。是英文who am i 的简写

2、实践操作

[root@xiezhr ~]# whoami
root
[root@xiezhr ~]# su - testuser
Last login: Sun Sep 11 21:21:40 CST 2022 on pts/3
[testuser@xiezhr ~]$ whoami
testuser
1
2
3
4
5
6
last 显示用户登录列表
1、简介

last命令用于显示最近登录的用户列表

2、语法格式

last [参数选项]
1
3、参数选项

参数 参数说明
- num 指定显示结果的行数
4、实践操作
① 不加参数显示

[root@xiezhr ~]# last
root pts/6 39.130.60.62 Sun Sep 11 22:42 still logged in
root pts/0 39.130.60.62 Sun Sep 11 22:37 still logged in
root pts/1 39.130.60.29 Sun Nov 29 09:09 - down (01:02)
root pts/0 39.130.60.29 Sun Nov 29 08:49 - down (01:23)
root pts/0 112.112.17.172 Fri Nov 6 12:50 - 15:45 (02:55)

wtmp begins Fri Nov 6 12:50:41 2020
1
2
3
4
5
6
7
8
② -num 参数,显示指定显示行数

[root@xiezhr ~]# last -5
root pts/6 39.130.60.62 Sun Sep 11 22:42 still logged in
root pts/0 39.130.60.62 Sun Sep 11 22:37 still logged in
root pts/5 39.130.60.62 Sun Sep 11 22:19 still logged in
root pts/4 39.130.60.62 Sun Sep 11 21:37 still logged in
root pts/3 39.130.60.62 Sun Sep 11 21:21 still logged in

wtmp begins Fri Nov 6 12:50:41 2020
1
2
3
4
5
6
7
8
lastb 显示用户登录失败的记录
1、简介

lastb命令用于显示用户登录失败的记录

2、语法格式

lastb [参数选项]
1
3、参数说明

参数 参数说明
-num 指定显示结果的行数
4、实践操作

[root@xiezhr ~]# lastb -5
ssh:notty 159.75.56.103 Sun Sep 11 21:18 - 21:18 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)

btmp begins Thu Sep 1 03:31:03 2022
1
2
3
4
5
6
7
8
lastlog 显示所有用户最近登录记录
1、简介

lastlog 命令用于显示用户最近登录的记录,便于查看系统是否异常

2、实践操作

[root@xiezhr ~]# lastlog
Username Port From Latest
root pts/6 Sun Sep 11 22:45:57 +0800 2022
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
test **Never logged in**
testxiezhr pts/0 Thu Sep 8 21:53:58 +0800 2022
testuser pts/6 Sun Sep 11 22:42:24 +0800 2022
1
2
3
4
5
6
7
8
9
10
注意:
当有从不登录的用户突然登录系统了,就要考虑是不是有用户入侵系统了

这期内容就到这,下期根据思维导图就到Linux磁盘与文件系统相关命令的使用了。
涉及到的命令有: fdisk、df、mount、dd、unmount、sync、等等
敬请期待哦(●’◡’●)

专栏目录:快速上手Linux核心命令专栏目录

上一篇:快速上手Linux核心命令(十一):Linux安装软件
下一篇:快速上手Linux核心命令(十二):磁盘与文件系统相关命令(博主正在玩命更新中)
————————————————
版权声明:本文为CSDN博主「xie_zhr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rong09_13/article/details/126592897

 

 

 

前言:学习的课程来自极客时间的专栏《趣谈 Linux 操作系统》,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程。

Linux 系统的相关介绍不再赘述,目前比较热门的技术,比如云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 的,像团购、电商、打车、快递这些系统都是部署在服务端,也几乎都是基于 Linux 技术的。想进大公司,想学新技术,Linux 一定是一道绕不过去的坎,只有扎实掌握 Linux 操作系统相关知识,才能成为合格的软件工程师。

相比于 Windows 的“图形化界面+菜单”使用模式,Linux 上手较难,其学习过程更像一个爬坡模式,要爬的坡主要有六个,分别是:熟练使用 Linux 命令行、使用 Linux 进行程序设计、了解 Linux内核机制、阅读 Linux 内核代码、实验定制 Linux 组件、面向真实环境的开发。

 

Step1:熟悉 Linux 命令行
基础:会用 --help、man 查看帮助文档
进阶:sed、awk、正则、管道、grep、find、shell 脚本、vim
推荐书籍:《鸟哥的 Linux 私房菜》、《 Linux 系统管理技术手册》
参考博客:别出心裁的Linux命令学习法

 

Step2:通过系统调用和 glibc 编程
了解和掌握系统调用(glibc 库),并能够编程操作 Linux
推荐书籍:《 Unix 环境高级编程 》
参考博客:别出心裁的Linux系统调用学习法

 

Step3:了解 Linux 内核机制
可以先了解一下 Linux 内核机制,知道基本的原理和流程。Linux 内核机制非常复杂,而且其中相互关联。比如说,进程运行要分配内存,内存映射涉及文件的关联,文件的读写需要经过块设备,从文件中加载代码才能运行起来进程。这些知识点要反复对照,才能理清。
推荐书籍:《深入理解 Linux 内核》、《庖丁解牛 Linux 内核分析》

 

Step4:阅读 Linux 内核源码
根据学习内核机制中遇到的问题或工作中要重点研究某方面技术,选择性的去研究源码,专注于核心逻辑和使用场景。(如你是研究网络的,就重点看内核协议栈的部分)
推荐书籍:《 Linux 内核源码情景分析》

Step5:实验化定制组件
因为 Linux 有源代码,很多地方可以参考现有的实现,定制化自己的模块。例如,可以自己实现一个设备驱动程序,实现一个自己的系统调用,或者实现一个自己的文件系统等等。这个阶段要求较高,需要把每个细节都搞清楚。
结合专栏的两个实验加强学习和理解。

 

Step6:面对真实场景的开发
结合具体的业务需求,基于 Linux 环境的开发要考虑很多因素,如并发与并行、锁与保护、扩展性与兼容性等,这些都要通过真实的项目多多实践。

Linux 操作系统学习爬坡路线图

(ps:对于大多数开发者而言,如果不是做 Linux 内核开发相关,尽量认真完成前三个阶段)

课程学习方法 tips:

1. 阅读:至少读两遍,阅读过程中思考是什么、为什么、如何用,联想之前的相关知识、做过的项目,尝试解答别人的问题,不懂的知识翻阅书籍或上网查。
2. 实践:提到的命令和代码要去动手敲,其他如分析系统调用和源码模块也要试着动手去做。
3. 总结:能串联各个部分的知识、能画出知识的框架。

 

 

posted on 2023-05-01 09:45  shuzihua  阅读(8)  评论(0编辑  收藏  举报

导航