Linux基础复习第四天

Linux基础复习第四天

1.Linux下常用的压缩包格式有哪些

  • .tar(归档文件,无压缩)

    特点:

    • 严格来说不是压缩工具,而是归档工具,将多个文件或目录打包成一个文件(.tar)。
    • 不减小文件体积,仅用于合并文件

    工具tar

    命令示例:

    • 打包:

      tar -cvf archive.tar /path/to/directory/
      
    • 解包:

      tar -xvf archive.tar
      
    • 适用场景
      需要保留目录结构或元数据(如权限、时间戳)时使用,通常与其他压缩工具结合使用(如 .tar.gz.tar.bz2)。

  • .gz(GZIP 压缩格式)

    特点:

    • 使用 DEFLATE 算法,压缩速度快,压缩率中等。
    • 只能压缩单个文件(不能直接压缩目录)。

    工具gzipgunzip

    命令示例:

    • 压缩单个文件:

      gzip filename.txt       # 生成 filename.txt.gz 并删除原文件
      gzip -c filename.txt > filename.txt.gz  # 保留原文件
      
    • 解压:

      gunzip filename.txt.gz
      
    • tar 结合使用:

      打包并压缩:

      tar -czvf archive.tar.gz /path/to/directory/
      

      解压:

      tar -xzvf archive.tar.gz
      
    • 适用场景
      需要快速压缩单个文件或与 tar 结合压缩目录时使用。

  • .bz2(BZIP2 压缩格式)

    特点:

    • 使用 Burrows-Wheeler 变换 + Huffman 编码,压缩率比 GZIP 高,但速度较慢。
    • 同样只能压缩单个文件。

    工具bzip2bunzip2

    命令示例:

    • 压缩单个文件:

      bzip2 filename.txt       # 生成 filename.txt.bz2 并删除原文件
      bzip2 -k filename.txt    # 保留原文件
      
    • 解压:

      bunzip2 filename.txt.bz2
      
    • tar 结合使用:

      打包并压缩:

      tar -cjvf archive.tar.bz2 /path/to/directory/
      

      解压:

      tar -xjvf archive.tar.bz2
      
    • 适用场景
      需要更高压缩率且对速度要求不高的场景(如备份日志文件)。

  • .xz(XZ 压缩格式)

    特点:

    • 使用 LZMA2 算法,压缩率最高,但速度最慢,内存占用较高。
    • 现代 Linux 发行版广泛采用。

    工具xzunxz

    命令示例:

    • 压缩单个文件:

      xz filename.txt         # 生成 filename.txt.xz 并删除原文件
      xz -k filename.txt      # 保留原文件
      
    • 解压:

      unxz filename.txt.xz
      
    • tar 结合使用:

      打包并压缩:

      tar -cJvf archive.tar.xz /path/to/directory/
      

      解压:

      tar -xJvf archive.tar.xz
      
    • 适用场景
      需要极致压缩率(如长期存储或节省磁盘空间)时使用。

  • .zip(跨平台通用压缩格式)

    特点:

    • 支持多文件、目录压缩,跨平台兼容性好(Windows/Linux/macOS 均可直接打开)。
    • 压缩率中等,速度适中。

    工具zipunzip

    命令示例:

    • 压缩目录:

      zip -r archive.zip /path/to/directory/
      
    • 解压:

      unzip archive.zip
      
    • 适用场景
      跨平台文件传输(如与 Windows 用户协作)。

  • .rar(RAR 压缩格式)

    特点:

    • 商业软件,压缩率高,支持分卷压缩和密码保护。
    • Linux 下需安装 rar 工具(仅支持解压,不能创建 .rar 文件)。

    工具rar(创建)、unrar(解压)

    命令示例:

    • 解压:

      unrar x archive.rar -d /path/to/destination/
      
    • 适用场景
      处理从 Windows 传来的 .rar 文件时使用。

  • .7z(7-Zip 压缩格式)

    特点:

    • 使用 LZMA 算法,压缩率高,支持 AES-256 加密。
    • 需要安装 p7zip 工具。

    工具7z

    命令示例:

    • 压缩:

      7z a archive.7z /path/to/directory/
      
    • 解压:

      7z x archive.7z
      
    • 适用场景
      需要高压缩率和加密功能时使用。

2.为什么要对文件进行打包后传输/备份,而不是直接传输/备份

  • 可以提高传输效率:
    • 打包成压缩文件,传输时只需要处理一个文件,而不是逐个处理大量的小文件,这样可以减少建立和断开连接的次数。
    • 压缩后文件体积更小,占用更少的数据包数量。
    • 可以降低网络拥塞和重传的效率,适合带宽有限和延迟较高的网络环境。
  • 节省存储空间:
    • 压缩工具可以通过算法去除冗余数据,显著减少文件占用空间。
    • 对于需要长期备份的文件(如日志、数据库),压缩后可节省硬盘或云存储成本。
  • 保持文件结构完整性
    • 打包工具会将文件和目录层级关系完整保存,解压后可还原原始结构,避免手动整理的麻烦。
    • 还可以避免文件丢失或损毁,导致文件数据不一致的风险。
  • 增加数据安全性
    • 部分压缩工具(如 zip7z)支持密码加密,防止未经授权的访问。
    • 压缩包可附加校验信息(如 MD5 校验码),确保传输或备份过程中数据未被篡改。
  • 简化管理和维护
    • 打包后的单个文件更易于管理(如命名、类名、归档),更适合团队协作和跨系统传输。
    • 备份时可为每个版本单独生成独立的压缩包,方便历史版本回溯。

3.打包和压缩有什么区别吗

  • 定义与目的
    操作定义目的
    打包将多个文件或目录合并为一个文件(如 .tar),保留原有结构简化传输、备份或管理多个文件,减少文件数量。
    压缩通过算法减小文件体积(如 .gz.xz)。节省存储空间和传输带宽。
  • 核心差异
    维度打包压缩
    处理对象多个文件或目录 → 合并为一个文件(如 tar)。单个文件或已打包的文件 → 压缩体积(如 gzipbzip2)。
    是否改变文件结构保留原有目录结构(如 tar)。不涉及文件结构,仅处理文件内容。
    是否减少体积不减少体积(仅合并文件)。显著减少体积(通过算法去除冗余数据)。
    典型工具tar7z(部分工具支持打包和压缩)。gzipbzip2xzzip
  • 典型应用场景

    打包(归档)

    • 场景:需要保留文件结构快速备份/传输多个文件

      示例:将 /home/user 目录下的所有文件打包为 backup.tar

      命令:

      tar -cvf backup.tar /home/user
      
    • 优势:

      保留权限、时间戳等元数据。

      适合传输大量小文件(减少网络请求次数)。

    压缩

    • 场景:需要节省存储空间减少传输数据量

      示例:将 file.txt 压缩为 file.txt.gz

      命令:

      gzip file.txt
      
    • 优势:

      显著减小文件体积(如 .tar.gz 压缩率可达 60%~80%)。

      支持加密(如 zip7z)。

  • 打包与压缩的结合使用

    在实际应用中,通常先打包后压缩,以兼顾结构保留和体积优化:

    • 打包 + GZIP 压缩(.tar.gz

      tar -czvf archive.tar.gz /path/to/directory/
      
    • 打包 + BZIP2 压缩(.tar.bz2)

      tar -cjvf archive.tar.bz2 /path/to/directory/
      
    • 打包 + XZ 压缩(.tar.xz

      tar -cJvf archive.tar.xz /path/to/directory/
      

4.将/etc目录打包到/opt/etc.tgr.gz

首先,确定/opt目录是否存在

ls /opt
# 如果不存在,则需要先进行文件夹创建
sudo mkdir -p /opt

第二,切换到root用户进行打包备份操作

执行以下命令,将 /etc 目录打包并压缩为 etc.tar.gz

tar -czvf /opt/etc.tar.gz /etc

# 输出为:
tar: Removing leading `/' from member names
/etc/
/etc/bash.bashrc
/etc/pam.conf
/etc/ModemManager/
/etc/ModemManager/connection.d/
/etc/ModemManager/fcc-unlock.d/
/etc/crypttab
/etc/profile.d/
/etc/profile.d/gawk.sh
..........

# 也可以去除 -v 省略详细打包过程
  • 参数说明:
    • -c:创建新的归档文件。
    • -z:使用 gzip 压缩。
    • -v:显示详细打包过程(可选)。
    • -f:指定输出文件路径和名称(/opt/etc.tar.gz)。

第三,确认etc.tar.gz压缩文件是否生成

ls -lh /opt/etc.tar.gz 

# 输出为
-rw-r--r-- 1 root root 565K Jul  6 09:48 /opt/etc.tar.gz

​ 还可以查看压缩包内容再次进行确认

tar -tvf /opt/etc.tar.gz  # -f 表示“列出归档文件中的内容”

# 输出为:
drwxr-xr-x root/root         0 2025-07-02 16:37 etc/
-rw-r--r-- root/root      2319 2022-01-06 16:23 etc/bash.bashrc
-rw-r--r-- root/root       552 2020-08-12 00:15 etc/pam.conf
drwxr-xr-x root/root         0 2024-09-11 14:24 etc/ModemManager/
drwxr-xr-x root/root         0 2023-12-20 05:35 etc/ModemManager/connection.d/
drwxr-xr-x root/root         0 2023-12-20 05:35 etc/ModemManager/fcc-unlock.d/
-rw-r--r-- root/root        54 2024-09-11 14:22 etc/crypttab
drwxr-xr-x root/root         0 2024-09-11 14:24 etc/profile.d/
-rw-r--r-- root/root       757 2023-08-17 10:24 etc/profile.d/gawk.sh
-rw-r--r-- root/root        96 2021-10-15 10:06 etc/profile.d/01-locale-fix.sh
-rw-r--r-- root/root       835 2024-07-26 02:57 etc/profile.d/apps-bin-path.sh
-rw-r--r-- root/root      1107 2023-08-17 10:24 etc/profile.d/gawk.csh
-rw-r--r-- root/root       726 2021-11-15 21:58 etc/profile.d/bash_completion.sh
-rwxr-xr-x root/root       841 2024-07-11 21:27 etc/profile.d/Z99-cloudinit-warnings.sh
-rwxr-xr-x root/root      3396 2024-07-11 21:27 etc/profile.d/Z99-cloud-locale-test.sh
-rw-r--r-- root/root      1557 2020-02-17 14:11 etc/profile.d/Z97-byobu.sh
.................

5.解压/opt/etc.tar.gz到 ~/myetc

首先,需确认~/myetc文件夹是否存在,如不存在则需要创建该文件夹

第二,执行解压命令到指定文件夹中

tar -zxf /opt/etc.tar.gz -C ~/myetc

参数说明:
-z:使用 gzip 解压(针对 .tar.gz 文件)。
-t:列出归档文件中的内容
-x:提取文件。
-v:显示解压过程(可选)。
-f:指定文件名(/opt/etc.tar.gz)。
-C:指定解压到的目标目录(~/myetc)。

第三,验证解压结果

ls -R ~/myetc 
# -R 表示递归遍历目录内容,显示所有子目录及其内容

# 输出为:
root/myetc:
etc

/root/myetc/etc:
adduser.conf                   cryptsetup-initramfs  gss              libnl-3         multipath.conf       polkit-1      services           ubuntu-advantage
alternatives                   crypttab              hdparm.conf      locale.alias    nanorc               pollinate     shadow             ucf.conf
apparmor                       dbus-1                host.conf        locale.gen      needrestart          profile       shadow-            udev
apparmor.d                     debconf.conf          hostname         localtime       netconfig            profile.d     shells             udisks2
apport                         debian_version        hosts            logcheck        netplan              protocols     skel               ufw
apt                            default               hosts.allow      login.defs      network              python3       sos                update-manager
bash.bashrc                    deluser.conf          hosts.deny       logrotate.conf  networkd-dispatcher  python3.10    ssh                update-motd.d
bash_completion                depmod.d              init.d           logrotate.d     networks             rc0.d         ssl                update-notifier
bash_completion.d              dhcp                  initramfs-tools  lsb-release     newt                 rc1.d         subgid             UPower
bindresvport.blacklist         dpkg                  inputrc          lvm             nftables.conf        rc2.d         subgid-            usb_modeswitch.conf
..............................

6.如何查看本地的全部网卡及ip

  • Windows系统
    • 使用命令提示符(CMD)win+R 打开命令提示符输入cmd,然后输入ipconfig /all进行查看。
  • Linux系统
    • 使用ip命令

      ip addr show
      或者
      ip a
      
    • 使用ifconfig命令

    • 查看系统日志

      查看网卡驱动信息:
      lspci | grep -i network
      
      查看所有网络接口:
      ls /sys/class/net
      

7.什么是路由,如何查看当前机器的默认路由

路由(Routing) 是计算机网络中的核心概念,指数据包从源设备到目标设备的传输路径选择过程。路由器(Router)是执行路由功能的设备,它通过路由表(Routing Table) 决定数据包的下一跳地址(Next Hop),最终将数据包转发到目标网络或主机。

  • 路由表(Routing Table)

    包含以下关键信息:

    • 目标网络(Destination):数据包的目标地址或网络段(如 192.168.1.0/24)。
    • 网关(Gateway):下一跳路由器的 IP 地址(如 192.168.1.1)。
    • 子网掩码(Netmask):用于匹配目标网络的子网范围。
    • 接口(Interface):数据包从哪个网络接口(如 eth0wlan0)发送。
    • 跃点数(Metric):路径优先级(数值越小优先级越高)。
  • 默认路由:

    默认路由(Default Route) 是路由表中的一条特殊条目,用于处理所有未明确匹配的网络请求。它通常指向默认网关(Default Gateway),即数据包离开本地网络后经过的第一个路由器。

    • Windows系统

      打开win+R输入cmd,然后执行route print,或者查看更简洁的IPv4路由表route print -4

    • Linux系统

      输入ip route show,或者传统命令route -n(但需安装net-tools)

8.如何将命令的输出内容写入到一个文件

方法用途示例
>覆盖写入标准输出ls > file.txt
>>追加写入标准输出echo "text" >> file.txt
2>写入标准错误command 2> error.txt
&>合并标准输出和错误command &> output.txt
tee显示并保存输出`command
sudo tee以管理员权限写入文件`echo “…”
/dev/null丢弃输出command > /dev/null

9.制作一个200行+的文本文件,并说明使用more或less命令查看此文件内容会有什么区别

可以用yes "This is a line" | head -n 250 > large_file.txt生成一个重复输出This is a line250次的文件

  • more命令

    more large_file.txt命令;该命令只支持方向键向下翻页无法向上滚动,如果误翻页则需要重新输入该命令。还可以支持向下搜索(/keyword)关键字,适合快速浏览小文件且不需要回滚的内容。

  • less命令
    • 用less large_file.txt命令;该命令支持空格键向下翻页、b键向上翻页,且支持方向上下键进行逐行滚动。还可以向下搜索(/keyword)关键字。向上搜索(?keyword)关键字,都可以按n查找下一个,N查找上一个。

    • 还可以通过:行号,跳转到相关的行数。G跳转到文件末尾。

    • 按F键还可进入实时监控模式,类似于tail -fCtrl+C退出健康模式。

    • 适合查看大文件,如日志、代码等。

均通过:q退出文件。

10.在vim中如何替换文件中的内容,比如将所有的aaa都替换为bbb

  • sed 是最常用的文本替换工具,支持直接修改文件或输出到新文件。

    语法

    sed -i 's/旧关键字/新关键字/g' 文件名
    
    • 替换文件中的所有 aaabbb

      sed -i 's/aaa/bbb/g' example.txt
      

      -i:直接修改原文件(若需备份,可使用 -i.bak 生成备份文件)。

      s/aaa/bbb/gs 表示替换,g 表示全局替换(一行中所有匹配项)。

    • 替换每行第一个匹配项(不加g)

      sed -i 's/aaa/bbb/' example.txt
      
    • 替换特定行的关键词

      sed -i '3s/old/new/' example.txt  # 只替换第3行的第一个匹配项
      

11.在命令行中如何替换呢

  • sed 是最常用的文本替换工具,支持直接修改文件或输出到新文件。

    语法

    sed -i 's/旧关键字/新关键字/g' 文件名
    
    • 替换文件中的所有 aaabbb

      sed -i 's/aaa/bbb/g' example.txt
      

      -i:直接修改原文件(若需备份,可使用 -i.bak 生成备份文件)。

      s/aaa/bbb/gs 表示替换,g 表示全局替换(一行中所有匹配项)。

    • 替换每行第一个匹配项(不加g)

      sed -i 's/aaa/bbb/' example.txt
      
    • 替换特定行的关键词

      sed -i '3s/old/new/' example.txt  # 只替换第3行的第一个匹配项
      

12.如何对比两个文本文件的区别

  • Linux/Unix 系统

    (1) 使用 diff 命令

    • 基本语法:

      diff file1.txt file2.txt
      

      常用选项:

      并排对比(左右显示差异):

      diff -y file1.txt file2.txt
      

      隐藏相同行(仅显示差异):

      diff -y --suppress-common-lines file1.txt file2.txt
      

      输出为统一格式(适合补丁生成):

      diff -u file1.txt file2.txt
      

      忽略空格和大小写差异:

      diff -w -i file1.txt file2.txt
      

    (2) 使用 vimdiff

    • 启动方式:

      vimdiff file1.txt file2.txt
      
    • 特点:

      并排显示文件,差异部分用颜色高亮。

      支持交互式编辑和合并(如复制行到另一窗口)。

    (3) 使用 colordiff

    • 安装(如未预装):

      sudo apt install colordiff  # Debian/Ubuntu
      sudo dnf install colordiff  # RHEL/CentOS
      
    • 使用:

      colordiff file1.txt file2.txt
      
    • 特点:终端输出带颜色标记,直观显示增删改。

    (4) 使用 sdiff

    • 交互式合并:

      sdiff -o merged.txt file1.txt file2.txt
      
    • 特点:逐行提示选择保留哪一方的修改,结果保存到 merged.txt

    (5) 使用 comm 命令

    • 适用场景:比较已排序的文件。

    • 语法:

      comm file1.txt file2.txt
      
    • 选项:

      -1:不显示只在 file1 中出现的行。

      -2:不显示只在 file2 中出现的行。

      -3:不显示两个文件共有的行。

      示例:仅显示两个文件的交集:

      comm -12 file1.txt file2.txt
      

14.如何在目录中查找某个文件

  • 使用 find 命令(最常用)

    基本语法:

    find [路径] -name "文件名"
    

    示例:

    • 在根目录下查找名为/example.txt的文件:

      find / -name "example.txt"
      
    • /home/user目录下查找所有.log的文件:

      find /home/user -name ".log"
      
    • 忽略大小写查找(如report1.txt、Report1.TXT):

      find . -iname "report1.txt"
      
    • 按类型查找(如只查找目录):

      find /var -type d -name "temp"
      
  • 使用 whereis 命令(查找二进制文件、源码或文档)

    基础语法:

    whereis 命令名
    

    示例:

    ​ 查找grep命令的二进制文件和手册页位置:

    whereis grep
    
  • 使用 grep 命令(按内容查找文件)

    基本语法:

    grep -r "关键词" 路径
    

    示例:

    在当前目录下递归查找包含error的文件:

    grep -r "error" .
    

15.除了按照名称查找文件外,还能按照什么方式查找文件

  • 按文件类型查找

    命令find-type 参数

    示例:

    # 查找所有目录
    find /path -type d -name "temp*"
    # 查找所有符号链接
    find /path -type l -name "*.lnk"
    # 查找所有普通文件(非目录、链接)
    find /path -type f -name "*.txt"
    

    常见类型:

    f:普通文件

    d:目录

    l:符号链接

    c:字符设备

    b:块设备

  • 按时间戳查找

    命令find-atime(访问时间)、-mtime(修改时间)、-ctime(元数据更改时间)

    示例:

    # 查找 7 天内被修改过的文件
    find /path -type f -mtime -7
    # 查找 30 天前被访问过的文件
    find /path -type f -atime +30
    # 查找 5~10 天内修改过的文件
    find /path -type f -mtime +5 -mtime -10
    

    时间单位:

    +n:大于 n 天/分钟

    -n:小于 n 天/分钟

    n:等于 n 天/分钟

  • 按文件大小查找

    命令find-size 参数

    示例:

    # 查找大于 100MB 的文件
    find /path -type f -size +100M
    # 查找小于 1KB 的文件
    find /path -type f -size -1k
    

    单位说明:

    c:字节(如 +100c 表示大于 100 字节)

    k:千字节

    M:兆字节

    G:吉字节

  • 按文件内容查找

    命令grepfind 结合 -exec

    示例:

    # 查找包含 "error" 的文件
    grep -r "error" /path/to/search
    # 或使用 find 结合 grep
    find /path -type f -exec grep -l "success" {} \;
    
  • 按路径或目录层级查找

    命令find-path-maxdepth 参数

    示例:

    # 查找路径中包含 "logs" 的文件
    find /path -path "logs"
    # 限制最大搜索深度为 2 层
    find /path -maxdepth 2 -name ".log"
    
  • 按权限或所有权查找

    命令find-perm-user-group 参数

    示例:

    # 查找权限为 644 的文件
    find /path -perm 644
    # 查找属于用户 root 的文件
    find /path -user root
    # 查找属于组 www-data 的文件
    find /path -group www-data
    
  • 按文件属性查找

    命令find-empty(空文件)、-readable(可读)、-writable(可写)等参数

    示例:

    # 查找空文件或空目录
    find /path -empty
    # 查找可执行文件
    find /path -type f -executable
    
  • 组合条件查找

    命令find 支持逻辑运算符 -a(与)、-o(或)、!(非)

    示例:

    # 查找所有 .log 文件且大于 10MB
    find /path -type f -name "*.log" -a -size +10M
    # 查找所有 .txt 或 .csv 文件
    find /path -type f $ -name "*.txt" -o -name "*.csv" $
    

16.给出按照文件大小、创建时间、文件类型查找文件的命令

  • 按文件大小查找

    命令格式

    find [路径] -type f -size [大小参数]
    

    参数说明:

    -type f:仅查找普通文件(可省略,直接用 -size)。

    -size:指定文件大小,单位可选 c(字节)、k(KB)、M(MB)、G(GB)。

    • +n:大于 n 单位。
    • -n:小于 n 单位。
    • n:等于 n 单位。

    示例

    # 查找大于 100MB 的文件
    find /path/to/search -type f -size +100M
    
    # 查找小于 1KB 的文件
    find /path/to/search -type f -size -1k
    
    # 查找等于 500KB 的文件
    find /path/to/search -type f -size 500k
    
  • 按创建时间查找

    注意事项

    Linux 系统默认记录的是 修改时间(mtime)访问时间(atime),但 创建时间(crtime) 并非所有文件系统都支持(如 ext4 支持,但默认未启用)。
    如果需要精确的创建时间,可通过 debugfsstat 命令查看,但日常查找通常使用 mtimectime(元数据更改时间)作为替代。

    命令格式

    find [路径] -type f -ctime [时间参数]
    

    参数说明:

    • -ctime n:文件 状态更改时间n 天前/后(例如:-ctime -7 表示 7 天内状态更改过的文件)。
    • -mtime n:文件 内容修改时间n 天前/后。

    示例

    # 查找 7 天内创建/修改过的文件(假设 ctime 表示创建时间)
    find /path/to/search -type f -ctime -7
    
    # 查找 30 天前修改过的文件
    find /path/to/search -type f -mtime +30
    
  • 按文件类型查找

    命令格式

    find [路径] -type [类型标识符]
    

    类型标识符:

    • f:普通文件(默认不加此参数)。
    • d:目录。
    • l:符号链接。
    • c:字符设备。
    • b:块设备。
    • p:管道(FIFO)。
    • s:套接字(Socket)。

    示例

    # 查找所有目录
    find /path/to/search -type d
    
    # 查找所有符号链接
    find /path/to/search -type l
    
    # 查找所有字符设备文件
    find /path/to/search -type c
    

17.ping命令是干啥的,使用的什么协议

  • ping 是一个用于 测试网络连通性 的工具,主要功能包括:
    • 检测目标主机是否可达:通过发送数据包并等待响应,判断目标设备(如服务器、路由器、PC)是否在线。

    • 测量网络延迟:计算数据包从发送到返回的时间(往返时间,RTT),评估网络速度。

    • 诊断网络故障:通过丢包率、超时等信息,帮助定位网络问题(如线路故障、防火墙阻断等)。

  • ping 命令基于 ICMP(Internet Control Message Protocol,互联网控制报文协议) 实现:
    • ICMP 协议的作用

      属于 TCP/IP 协议栈的网络层(与 IP 协议同层),主要用于传递网络状态信息(如错误报告、连通性测试)。

      ping 发送的是 ICMP Echo Request(回显请求) 报文,目标主机收到后返回 ICMP Echo Reply(回显应答) 报文。

    • ICMP 报文特点

      无连接:不需要建立 TCP 连接,直接发送数据包。

      轻量级:数据包头部较小,适合快速测试。

      不保证可靠性:如果丢包或超时,可能表示网络问题,但并非绝对。

  • Ping 的工作原理
    发送 ICMP 请求:
    • 用户输入 ping <目标地址>(如 ping www.baidu.com)。

    • 系统生成 ICMP Echo Request 报文,封装在 IP 数据包中发送到目标地址。

    目标主机响应:
    • 目标主机收到请求后,返回 ICMP Echo Reply 报文。
    结果分析:
    • 成功收到响应:显示往返时间(如 time=12.345 ms),表示网络连通。
    • 超时或丢包:可能由网络故障、防火墙限制或目标主机不可达导致。

18.常见的协议有哪些,都有什么作用

以下是常见的网络协议及其主要作用的分类和说明,基于TCP/IP协议栈的分层结构:

  • 网络层协议
    • IP(Internet Protocol)

      • 作用:负责数据包的寻址和路由选择,将数据包从源主机发送到目标主机。

      • 版本:IPv4(32位地址)和IPv6(128位地址)。

      • 特点:无连接、不可靠(不保证数据包的顺序或可靠性)。

    • ICMP(Internet Control Message Protocol)

      • 作用:用于传递网络错误信息和控制消息(如“目标不可达”)。

      • 应用pingtracert 命令依赖ICMP测试网络连通性和路径追踪。

    • ARP(Address Resolution Protocol)

      • 作用:将IP地址转换为物理MAC地址(局域网内的通信)。

      • 场景:设备首次通信时通过ARP广播获取目标MAC地址。

    • RARP(Reverse ARP)

      • 作用:将MAC地址转换为IP地址(已逐渐被DHCP取代)。
    • OSPF(Open Shortest Path First)

      • 作用:动态路由协议,用于大型网络中快速计算最优路径。
  • 传输层协议
    • TCP(Transmission Control Protocol)

      • 作用:提供可靠的、面向连接的数据传输服务。

      • 特点:

        通过三次握手建立连接,四次挥手断开连接。

        保证数据完整性(重传、流量控制、拥塞控制)。

      • 应用:Web浏览(HTTP)、文件传输(FTP)、邮件(SMTP/POP3/IMAP)。

    • UDP(User Datagram Protocol)

      • 作用:提供无连接、不可靠的数据传输服务。

      • 特点:

        无连接开销,传输速度快。

        不保证数据顺序或可靠性。

    • 应用:实时音视频(如VoIP)、DNS查询、游戏通信。

    • SCTP(Stream Control Transmission Protocol)

      • 作用:结合TCP和UDP的优点,支持多流和多宿主通信。

      • 应用:电信信令(如SS7)和高可靠性场景。

  • 应用层协议
    • HTTP/HTTPS(HyperText Transfer Protocol)

      • 作用:浏览器与服务器之间的数据传输协议。

      • HTTPS:在HTTP基础上增加SSL/TLS加密,保障数据安全。

      • 应用:网页访问、API调用。

    • FTP(File Transfer Protocol)

      • 作用:文件上传/下载服务。

      • 特点:需要建立控制连接(端口21)和数据连接(动态端口)。

      • 替代方案:SFTP(基于SSH的加密文件传输)。

    • SMTP(Simple Mail Transfer Protocol)

      • 作用:发送电子邮件的协议。

      • 搭配协议:POP3/IMAP用于接收邮件。

    • DNS(Domain Name System)

      • 作用:将域名(如www.example.com)解析为IP地址(如192.168.1.1)。

      • 协议类型:基于UDP(默认)或TCP(大数据量时)。

    • DHCP(Dynamic Host Configuration Protocol)

      • 作用:自动分配IP地址、子网掩码、网关等网络参数。

      • 场景:局域网中设备动态获取网络配置。

    • Telnet/SSH(Secure Shell)

      • 作用:远程登录和管理设备。

      • 区别:Telnet明文传输(不安全),SSH加密传输(推荐)。

    • NTP(Network Time Protocol)

      • 作用:同步网络设备的时间。

      • 应用:服务器集群、日志记录等时间敏感场景。

    • SNMP(Simple Network Management Protocol)

      • 作用:监控和管理网络设备(如路由器、交换机)。

19.什么是前台运行,什么是后台运行

  • 前台运行(Foreground)
    定义

    前台运行是指程序直接与用户交互,占用当前终端(或图形界面),用户必须等待程序执行完毕或手动终止后才能继续操作。

    特点
    • 独占终端:程序运行时会占据终端的输入输出(如 vim 编辑器、top 命令)。

    例如:

    ping example.com  # 前台运行,终端被阻塞
    

    执行后,终端会持续输出 ping 的结果,用户无法执行其他命令,直到按 Ctrl+C 终止。

    • 用户交互性:用户可以直接通过键盘输入与程序交互(如输入密码、选择菜单)。

    例如:

    sudo apt update  # 需要用户输入密码
    
    • 阻塞性:程序运行期间,终端无法执行其他命令,除非程序结束或被挂起。
  • 后台运行**(Background)**

    定义

    后台运行是指程序在无用户交互的情况下静默执行,不占用终端焦点,用户可以在终端继续执行其他操作。

    特点
    • 非阻塞性:程序在后台运行,用户可以继续在终端执行其他命令。

    例如:

    tar -czf backup.tar.gz /path/to/folder &
    
    • 资源占用:后台进程可能占用系统资源(CPU、内存),但优先级通常低于前台进程。
  • 前后台运行的操作命令

    1. 将任务置于后台

    • 启动时直接后台运行
      在命令末尾添加 & 符号:

      ping example.com &  # 后台运行
      
    • 暂停后转为后台

      Ctrl+Z暂停前台进程:

      ^Z  # 暂停当前运行的命令
      

      使用bg命令将暂停的进程转为后台运行:

      bg  # 恢复最近暂停的进程到后台
      

    2. 查看后台任务

    • 使用 jobs 命令查看当前终端的后台任务列表:

      jobs -l  # 显示作业编号、进程ID和状态
      

      示例输出:

      [1] 12345 Running    ping example.com &
      

    3. 将后台任务调回前台

    • 使用 fg 命令将后台任务调回前台:

      fg %1  # 将作业编号为1的任务调回前台
      

    4. 让任务在终端关闭后继续运行

    默认情况下,关闭终端会导致后台任务终止。若需保留任务,需使用以下方法:

    • nohup + &

      nohup ping example.com > output.log 2>&1 &  # 输出重定向到文件
      

      输出会被写入 nohup.out 或指定的文件(如 output.log)。

    • disown 命令

      1. 先将任务置于后台:

        ping example.com &  # 后台运行
        
      2. 使用disown解除任务与终端的关联:

        disown %1  # 作业编号为1的任务
        

20.执行ping命令,之后退出终端,这个ping命令还会继续执行吗?为什么?

在 Linux 中,如果在前台运行 ping 命令后直接退出终端(关闭终端窗口或注销会话),ping 命令通常会被终止

终止原因:

  • 当终端(即当前 shell 会话)被关闭时,系统会向该终端的前台进程发送 HUP(Hang Up)信号,默认行为是 终止进程
  • 如果 ping 命令是在前台运行的(未通过 & 放到后台或未通过 nohup/disown 解除关联),它会随着终端关闭而终止。
  • 默认情况下,进程是与启动它的终端(会话)绑定的。终端关闭时,所有未脱离会话的子进程都会被终止。

21.执行ping命令,会产生一个进程还是线程还是什么

在 Linux 中,执行 ping 命令时,系统会创建一个新的进程,而不是直接创建线程。

  • ping 命令的本质
    • ping 是一个独立的可执行程序(通常位于 /bin/ping/usr/bin/ping),它属于用户空间程序。
    • 当用户在终端输入 ping example.com 时,shell 会调用操作系统的 fork()exec() 系统调用,创建一个新的进程来运行 ping 程序。
  • 进程与线程的关系
    • 进程
      每个进程都是独立的资源分配单位,拥有独立的内存地址空间、文件描述符、环境变量等。
      • 例如,ping 命令启动时,会创建一个独立的进程(可以通过 ps 命令查看)。
      • 默认情况下,进程至少包含一个线程(主线程),负责执行程序的代码。
    • 线程
      线程是进程内的执行单元,共享进程的资源(如内存、文件描述符)。
      • 如果 ping 程序内部没有显式创建额外线程(如通过 pthread_create),则其进程中只有一个主线程。
      • 多数简单工具(如 ping)默认是单线程的,除非程序本身设计为多线程。
  • 为什么 ping 默认是单线程?
    • 功能需求ping 的功能是发送 ICMP 请求并等待响应,这是一个串行任务,无需并发处理。因此,单线程足以满足需求。
    • 资源效率:多线程会增加上下文切换开销和资源占用。对于轻量级工具(如 ping),单线程更高效。

22.pid是什么?如何找到,执行的ping命令的pid

PID(Process Identifier) 是进程的唯一标识符,用于标识操作系统中正在运行的进程。每个进程启动时,系统都会分配一个唯一的 PID(通常从 1 开始递增)。

作用:通过 PID 可以定位、监控或终止特定进程。

特点:

PID 是临时的,进程结束后 PID 会被释放并重新分配给新进程。

PID 与进程一一对应,每个进程有且仅有一个 PID。

  • 使用 ps 命令
    ps -ef | grep ping
    
    • 说明:

      • ps -ef:列出所有正在运行的进程。
      • grep ping:筛选出包含 ping 的进程。
    • 输出示例:

      user123 12345 1  0 22:34 pts/0  00:00:00 ping example.com
      
      • PID:第二列数字(如 12345)就是 ping 进程的 PID。
  • 验证 PID 是否正确

    查看进程详细信息

    ps -p <PID> -o pid,ppid,cmd,%mem,%cpu
    
    • 示例(假设 PID 为12345):

      ps -p 12345 -o pid,ppid,cmd,%mem,%cpu
      
    • 输出示例:

        PID  PPID CMD                         %MEM %CPU
      12345  1234 ping example.com             0.1  0.0
      

    查看进程的完整命令行参数

    cat /proc/<PID>/cmdline
    
    • 示例:

      cat /proc/12345/cmdline
      
    • 输出示例:

      pingexample.com
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值