5865 字
29 分钟
Linux基础问题 4

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

  • .tar:常用于将多个文件或目录打包成一个文件,通常不进行压缩。

  • .tar.gz.tgzgzip 压缩的 tar 包):通过 tar 打包后使用 gzip 压缩,是非常常见的 Linux 压缩格式。

  • .tar.bz2bzip2 压缩的 tar 包):通过 tar 打包后使用 bzip2 压缩,相比 gzipbzip2 提供更高的压缩率。

  • .tar.xzxz 压缩的 tar 包):通过 tar 打包后使用 xz 压缩,提供更高的压缩率,但压缩和解压速度较慢。

  • .gzgzip):常用于单一文件的压缩,适合快速压缩和解压。

  • ..bz2bzip2):与 .gz 类似,但提供更高的压缩比,适合单个文件压缩。

  • .xzxz):压缩比高,适合压缩单个文件,尤其在需要高压缩比的场景下。

  • .zip:广泛应用于跨平台的文件压缩,尤其适用于 Windows 和 Linux 系统之间的文件交换。

  • .rar:常见的压缩格式,适用于高压缩率要求的场景,但不如 .zip 那样跨平台广泛。

  • .7z7zip):提供非常高的压缩比,适合用于高压缩率的场景。

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

  1. 提高效率(减少文件数量)

    • 打包后文件更少:如果你需要传输或备份多个文件,直接传输每个文件会导致大量的 I/O 操作和网络请求。通过打包成一个单一文件,减少了传输过程中的开销,节省了时间。
  2. 节省存储空间

    • 压缩减少空间:通过打包并进行压缩(如 .tar.gz.zip),可以减少文件的体积,节省存储空间。尤其对于大量小文件,通过压缩后存储空间会显著减少。

    • 提高传输效率:小文件会产生大量的文件系统元数据(如 inode 信息),而将其打包后,可以减少这些元数据占用的存储空间和传输时间。

  3. 提高传输稳定性

    • 网络传输稳定性:在网络传输中,多个小文件可能会受到各种因素(如延迟、丢包、网络抖动等)的影响,而导致传输中断或失败。打包成一个文件后,传输的稳定性和容错性更好。
  4. 保留文件结构和权限

    • 目录结构保留:当你打包整个目录时,打包文件能够保留原有的目录结构及文件权限信息(例如在 .tar 文件中)。如果直接传输文件,可能需要额外的操作来确保文件目录结构不丢失。

    • 文件属性:除了文件内容,打包文件还会保留文件的权限、时间戳等属性,保证恢复后的文件与原始文件一致。

  5. 避免操作系统和文件系统差异

    • 跨平台兼容性:不同操作系统和文件系统的差异可能导致直接传输文件时的兼容性问题(如符号链接、文件权限等)。打包后,可以确保文件在不同平台或文件系统之间传输时的一致性。
  6. 增加安全性

    • 加密和保护:打包后的文件可以加密或设置密码保护,确保文件在传输或备份过程中不被泄露。某些压缩工具(如 .zip.7z)提供了加密功能,可以增强文件的安全性。

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

特点打包压缩
操作目的合并多个文件/目录成一个文件减小文件的大小
是否改变文件大小不改变大小文件变小
是否需要解压时恢复原始文件是(文件和目录结构保留)是(恢复时需要解压还原原文件)
常见格式.tar, .cpio, .ar.gz, .bz2, .zip, .xz

通常情况下,打包和压缩会结合使用。例如,我们常常看到 .tar.gz.tar.bz2 文件格式:

  • tar 是打包操作,将多个文件合并为一个文件。
  • gzipbzip2 是压缩操作,对打包后的文件进行压缩,减少文件大小。

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

Terminal window
tar -czvf /opt/etc.tar.gz /etc
  • tar:使用 tar 命令进行打包。
  • -c:创建一个新的归档文件。
  • -z:使用 gzip 压缩文件。
  • -v:显示详细过程(可选)。
  • -f:指定输出文件的文件名(在这里是 /opt/etc.tar.gz)。
  • /etc:你要打包的目录。

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

Terminal window
tar -xzvf /opt/etc.tar.gz -C ~/myetc
  • tar:使用 tar 命令解压。
  • -x:表示解压归档文件。
  • -z:表示解压 .gz 压缩格式的文件。
  • -v:显示详细过程(可选)。
  • -f:指定要解压的文件(这里是 /opt/etc.tar.gz)。
  • -C:指定解压后的目标目录(在这里是 ~/myetc)。

6.如何查看本地的全部网卡及IP?#

  1. 使用 ip 命令(推荐):ip addr show

    • 该命令会列出所有网络接口的详细信息,包括每个网卡的 IP 地址(IPv4 和 IPv6)。

    • 输出示例:

      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
      inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
      valid_lft forever preferred_lft forever
      inet6 fe80::ba27:ebff:fe7b:a98f/64 scope link
      valid_lft forever preferred_lft forever
  2. 使用 ifconfig 命令(传统方式):ifconfig

    • ifconfig 命令会显示本机所有网络接口的详细信息,包括网卡的 IP 地址。

    • 注意:现代 Linux 系统可能默认不安装 ifconfig,需要手动安装 net-tools 包。

  3. 使用 hostname 命令(查看本机的 IP 地址):hostname -I

    • 该命令显示当前机器的所有 IP 地址。

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

什么是路由

路由(Routing)是数据包在网络中从源设备传输到目标设备的路径选择过程。路由的主要功能是确定数据包从源头到达目的地时应该经过哪些网络设备或路由器。每台设备(如计算机、路由器)都维护着一个路由表,用于决定数据包的转发方向。

在网络通信中,路由的作用包括:

  • 内部路由:在同一网络或子网内的数据传输。
  • 外部路由:在不同网络之间的通信,通常通过路由器进行。

默认路由

默认路由(Default Gateway)是当设备不知道如何到达目的地时,它会把数据包发送到默认网关(通常是路由器)。从默认路由,数据包可以被转发到其他网络。简而言之,默认路由是指向外部网络或互联网的“出口”。

如何查看当前机器的默认路由

  1. 使用 ip 命令ip route show

    • 该命令显示当前机器的路由表,其中包括默认路由。

    • 默认路由通常以default0.0.0.0开头,后面跟着网关地址。例如:default via 192.168.1.1 dev eth0

  2. 使用 route 命令(传统方式):route -n

    • 该命令显示路由表,其中会列出所有的路由信息。默认路由通常以 0.0.0.0 出现。

    • 输出示例:

      Destination Gateway Genmask Flags Metric Ref Use Iface
      0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
  3. 使用 netstat 命令(较旧的方式):netstat -rn

    • 显示路由表,与 route -n 类似,默认路由也会以 0.0.0.0 显示。

示例输出

  • 使用 ip route show 命令:

    $ ip route show
    default via 192.168.1.1 dev eth0
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

在这个例子中,默认路由是 192.168.1.1,并通过 eth0 网卡发送数据包。

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

使用 > 写入文件(覆盖写入):ls > file_list.txt

  • 该命令会将 ls 命令的输出(当前目录的文件列表)写入到 file_list.txt 文件中。如果 file_list.txt 文件已存在,它的内容会被覆盖。

使用 >> 写入文件(追加写入):echo "New entry" >> file_list.txt

  • 该命令会将字符串 New entry 追加到 file_list.txt 文件的末尾,而不会覆盖原有内容。

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

more 命令:more filename.txt

  • 基础功能more 以单页的方式显示文件内容,按页向下滚动。可以通过 Space 键翻到下一页,通过 Enter 键滚动一行,使用 q 退出查看。
  • 行为:
    • 只能向下查看文件,不能向上滚动。
    • 当你翻阅文件时,它会读取并显示文件的内容,直到文件结束。
    • more 比较简单,功能有限,不支持像 less 那样的灵活操作。

less 命令:less filename.txt

  • 基础功能less 是一个功能更强大的分页工具,它的名字来源于“more, but better”(比 more 更好)。它允许用户在文件中自由地向前和向后滚动。
  • 行为:
    • 支持向前和向后滚动文件。使用方向键()可以逐行滚动,使用 Page UpPage Down 键逐页滚动。
    • 使用 g 跳到文件的开头,使用 G 跳到文件的结尾。
    • 支持搜索(使用 / 进行前向搜索,使用 ? 进行反向搜索)。
    • 可以查看文件时进行更多交互操作,像滚动到某个位置、搜索文本、标记位置等。

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

只替换当前行中的::s/aaa/bbb/g

替换整个文件中的::%s/aaa/bbb/g

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

  • sed -i 's/aaa/bbb/g' filename:在文件中替换所有的 aaabbb
  • sed -i.bak 's/aaa/bbb/g' filename:替换并创建原文件的备份。

12.对比两个文本文件的区别?#

vimdiff file1.txt file2.txt:会打开一个包含两个文本文件的窗口,并突出显示它们的差异

  • ]c:跳到下一个差异。
  • [c:跳到上一个差异。
  • :wq:保存并退出。
  • :q!:强制退出。

13.如何在目录中查找某个文件?#

  • 在指定目录中查找文件find /path/to/directory -name "filename"
  • 查找具有特定扩展名的文件find . -name "*.txt"
  • 查找文件并忽略大小写find . -iname "filename"

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

  • 按照文件类型查找find . -type d
    • f:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备文件
    • b:块设备文件
    • p:命名管道(FIFO)
    • s:套接字
  • 按照文件大小查找find . -size +100M或者find . -size -1k
    • +:大于指定大小
    • -:小于指定大小
    • 没有符号:等于指定大小
  • 按照文件修改时间查找find . -mtime -7
    • +n:修改时间大于 n 天
    • -n:修改时间小于 n 天
    • n:修改时间恰好为 n 天
  • 按照文件权限查找find . -perm 755或者查找具有可执行权限的文件find . -perm /u+x
  • 按照文件所有者或群组查找find . -user user1
    • -user username:查找属于指定用户的文件
    • -group groupname:查找属于指定群组的文件
  • 根据文件内容查找(grep结合)find . -type f -exec grep -l "search_string" {} \;
    • search_string 是您要搜索的字符串,-l 表示只列出匹配的文件名。

15.给出按照文件大小、创建时间、文件类型查找文#

件的命令

  • 按照文件大小查找find . -size +100M或者find . -size -1k

    • +:大于指定大小
    • -:小于指定大小
    • 没有符号:等于指定大小
  • 按照文件创建时间查找find . -ctime -5

    • +n:创建时间大于 n 天
    • -n:创建时间小于 n 天
    • n:创建时间恰好为 n 天
  • 按照文件类型查找find . -type d

    • f:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备文件
    • b:块设备文件
    • p:命名管道(FIFO)
    • s:套接字

16.ping命令是干啥的?使用的什么协议?#

ping 命令是用于测试网络连接的工具,它的主要功能是检查计算机或网络设备是否能够访问到另一台设备,并测量网络通信的延迟时间。

ping 命令的工作原理:

  • ping 通过向目标设备(如主机或路由器)发送 ICMP (Internet Control Message Protocol) Echo Request 报文,等待目标设备返回 Echo Reply 报文。
  • 如果目标设备收到请求并且网络连接正常,它将返回一个 Echo Reply 报文,表示设备可达。
  • ping 会显示请求发送到目标设备的时间延迟,通常以 毫秒(ms) 为单位,代表从发送请求到接收响应所花费的时间。
  • 如果目标设备无法到达,ping 会报告请求超时或不可达。

使用的协议:

ping 使用的是 ICMP协议,即 互联网控制报文协议(Internet Control Message Protocol)。ICMP 是一个用于发送网络控制信息的协议,通常用于网络设备之间传递错误报告或进行诊断。

  • Echo RequestEcho Reply 是 ICMP 协议的两种常见报文类型。
  • Echo Requestping 发送的请求报文,Echo Reply 是目标设备返回的响应报文。

17.常见的协议有哪些?都有什么作用?#

  1. TCP(传输控制协议)
    • 这个技术是什么:TCP 是一种面向连接的、可靠的传输协议,保证数据在传输过程中的完整性和顺序。
    • 为什么要有这个技术:它提供可靠的数据传输,确保数据在传输过程中不丢失、不重复,且按顺序到达。
    • 在生产环境哪里会用这个技术:在需要可靠数据传输的应用中,如 Web 服务(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)等。
  2. UDP(用户数据报协议)
    • 这个技术是什么:UDP 是一种无连接的协议,不保证数据传输的可靠性,但传输速度快。
    • 为什么要有这个技术:它适用于对延迟敏感但不需要数据可靠性的应用。
    • 在生产环境哪里会用这个技术:视频流、语音通信(VoIP)、在线游戏、DNS 查询等实时应用。
  3. IP(互联网协议)
    • 这个技术是什么:IP 是一种网络层协议,负责将数据包从源设备传送到目标设备。
    • 为什么要有这个技术:它确保不同设备在网络中能够通过唯一的 IP 地址识别并找到彼此。
    • 在生产环境哪里会用这个技术:互联网和局域网中的所有设备通信都依赖 IP 协议。
  4. HTTP(超文本传输协议)
    • 这个技术是什么:HTTP 是一种用于 Web 客户端(如浏览器)和服务器之间传输超文本(如 HTML 页面)的协议。
    • 为什么要有这个技术:它使 Web 浏览和资源获取变得简单、无状态、基于请求/响应模型。
    • 在生产环境哪里会用这个技术:几乎所有网站的页面请求、API 调用、Web 服务等都使用 HTTP 协议。
  5. HTTPS(安全超文本传输协议)
    • 这个技术是什么:HTTPS 是 HTTP 的加密版本,通过 SSL/TLS 协议保护数据传输的安全性。
    • 为什么要有这个技术:它防止数据被窃取或篡改,保障隐私安全。
    • 在生产环境哪里会用这个技术:所有需要保护数据安全的 Web 应用,如银行网站、在线商店、用户登录系统等。
  6. FTP(文件传输协议)
    • 这个技术是什么:FTP 是一种用于在客户端和服务器之间传输文件的协议。
    • 为什么要有这个技术:它提供了一种简便的方式来上传和下载文件,并支持大文件的传输。
    • 在生产环境哪里会用这个技术:文件上传/下载、网站内容管理、备份文件传输等场景。
  7. SMTP(简单邮件传输协议)
    • 这个技术是什么:SMTP 是用于邮件发送的协议,通常用于将邮件从发件人服务器传输到收件人服务器。
    • 为什么要有这个技术:它定义了如何发送电子邮件并确保邮件到达目的地。
    • 在生产环境哪里会用这个技术:企业邮件系统、邮件营销平台、在线通知等。
  8. POP3(邮局协议3)
    • 这个技术是什么:POP3 是一种邮件接收协议,允许用户从服务器下载邮件到本地设备。
    • 为什么要有这个技术:它简化了邮件的接收和管理,特别适用于单一设备访问邮件的情况。
    • 在生产环境哪里会用这个技术:桌面邮箱客户端、一些邮件服务(如 Outlook)等。
  9. IMAP(互联网邮件访问协议)
    • 这个技术是什么:IMAP 允许用户访问存储在邮件服务器上的邮件,并进行多设备同步。
    • 为什么要有这个技术:它使得邮件在多个设备之间同步,并不会从服务器上删除邮件,适合跨设备访问。
    • 在生产环境哪里会用这个技术:电子邮件服务(如 Gmail、Yahoo Mail 等)、企业邮件系统等。
  10. DNS(域名系统)
    • 这个技术是什么:DNS 用于将人类易于记忆的域名(如 http://www.example.com/)解析为 IP 地址(如 192.168.1.1)。
    • 为什么要有这个技术:它帮助用户通过域名而非数字 IP 地址访问网站和服务。
    • 在生产环境哪里会用这个技术:互联网浏览、服务器访问、域名解析服务等。
  11. ARP(地址解析协议)
    • 这个技术是什么:ARP 用于将 IP 地址解析为物理地址(如 MAC 地址),使设备能够在局域网内通信。
    • 为什么要有这个技术:它解决了网络层(IP 地址)和数据链路层(MAC 地址)之间的映射问题。
    • 在生产环境哪里会用这个技术:局域网内部的设备通信、路由器等网络设备的工作中。
  12. ICMP(互联网控制消息协议)
    • 这个技术是什么:ICMP 用于发送控制消息,通常用于报告网络错误或执行网络诊断(如 ping)。
    • 为什么要有这个技术:它帮助管理员诊断网络问题、进行故障排除。
    • 在生产环境哪里会用这个技术:网络诊断工具(如 pingtraceroute)、路由器和防火墙中的错误报告。
  13. DHCP(动态主机配置协议)
    • 这个技术是什么:DHCP 自动为设备分配 IP 地址、子网掩码、默认网关等配置信息。
    • 为什么要有这个技术:它简化了网络配置,避免手动设置每个设备的网络信息。
    • 在生产环境哪里会用这个技术:大规模网络环境(如企业局域网、家庭网络)中为设备自动分配 IP 地址。
  14. SSL/TLS(安全套接字层/传输层安全协议)
    • 这个技术是什么:SSL/TLS 是用于加密和保护网络通信的协议,特别是在 Web 浏览器和服务器之间。
    • 为什么要有这个技术:它确保通信过程中的数据安全性,防止数据被窃取或篡改。
    • 在生产环境哪里会用这个技术:HTTPS 加密、在线支付、电子商务平台、VPN 服务等。
  15. BGP(边界网关协议)
    • 这个技术是什么:BGP 用于交换自治系统(AS)之间的路由信息,是互联网核心路由协议。
    • 为什么要有这个技术:它能够决定跨多个网络的最佳路由,确保数据流通过互联网时的高效传输。
    • 在生产环境哪里会用这个技术:互联网服务提供商(ISP)之间、数据中心之间的路由信息交换。

18.什么是前台运行?什么是后台运行?#

  • 前台运行(Foreground Running)
    • 定义:前台运行是指程序在用户的直接交互下运行,通常会占用屏幕和输入设备(如鼠标、键盘)的控制。用户需要与这个程序进行交互,才能继续使用其功能。
    • 特点:
      • 用户可见:程序的界面通常会显示在屏幕上。
      • 阻塞:前台程序通常会阻塞终端或命令行的控制,直到其执行完毕。
      • 交互性强:用户可以直接与程序进行输入输出操作。
    • 例子:当你打开一个浏览器或文本编辑器,并与它进行交互时,它就是前台运行的程序。
  • 后台运行(Background Running)
    • 定义:后台运行是指程序在用户界面不可见的情况下运行,用户可以在不干扰的情况下继续进行其他操作。后台程序通常不需要与用户直接交互,而是持续执行某些任务。
    • 特点:
      • 用户不可见:程序通常不显示在屏幕上,只有在后台运行。
      • 非阻塞:后台程序运行时,用户可以继续进行其他操作,而不会被中断。
      • 自动化任务:后台任务通常是定时任务、监控任务等,不需要频繁的用户输入。
    • 例子:比如你在下载一个文件,或者系统在进行某些更新时,下载程序或更新进程可能就在后台运行。

19.执行ping命令,之后退出终端,这个ping命令#

还会继续执行吗?为什么?

默认情况下,当你在终端执行 ping 命令并退出终端时,ping 命令不会继续执行,因为它是与当前终端会话绑定的进程。当你关闭终端时,所有与该终端会话相关联的进程(包括 ping)都会被终止。

这是因为进程的生命周期与终端会话是关联的。当你退出终端时,操作系统会发送一个信号给终端中的所有进程,通常是 SIGHUP(挂起信号),这个信号会终止正在运行的进程。

20.ping命令,会产生一个进程还是线程还是什么?#

ping 命令会产生一个 进程,而不是线程。

  • 进程:在操作系统中,进程是资源分配的基本单位,它代表一个正在执行的程序。每个进程都有自己的内存空间、资源、文件描述符等,且与其他进程相互独立。ping 命令本身是一个程序(通常是 ping 命令的可执行文件),当你执行 ping 时,操作系统会为其创建一个新的进程来执行。
  • 线程:线程是进程中的一个执行单位。一个进程可以包含多个线程,共享进程的资源和内存空间。通常情况下,一个简单的命令行工具(像 ping)通常只会使用一个主线程来执行任务,除非它内部有多线程的设计。

21.PID是什么?如何找到执行的ping命令的PID?#

PID(Process IDentifier,进程标识符)是操作系统用来唯一标识一个正在运行的进程的数字。每个进程在系统中都会分配一个唯一的 PID,操作系统通过 PID 来管理和跟踪进程的状态。

  • 列出所有进程并查找 ping 的 PIDps aux | grep ping

  • top 命令:动态显示系统中各个进程的状态。你可以通过 top 来查看 ping 进程的 PID。

  • htop 命令:是 top 命令的增强版,提供更好的交互界面,你可以通过 htop 查找 PID,并且界面更加友好。

Linux基础问题 4
https://fuwari.cbba.top/posts/佚名运维免费训练营-第4天/
作者
Chen_Feng
发布于
2025-08-20
许可协议
CC BY-NC-SA 4.0