Linux基础复习第四天
1.Linux下常用的压缩包格式有哪些
-
.tar(归档文件,无压缩)特点:
- 严格来说不是压缩工具,而是归档工具,将多个文件或目录打包成一个文件(
.tar)。 - 不减小文件体积,仅用于合并文件。
工具:
tar命令示例:
-
打包:
tar -cvf archive.tar /path/to/directory/ -
解包:
tar -xvf archive.tar -
适用场景:
需要保留目录结构或元数据(如权限、时间戳)时使用,通常与其他压缩工具结合使用(如.tar.gz、.tar.bz2)。
- 严格来说不是压缩工具,而是归档工具,将多个文件或目录打包成一个文件(
-
.gz(GZIP 压缩格式)特点:
- 使用 DEFLATE 算法,压缩速度快,压缩率中等。
- 只能压缩单个文件(不能直接压缩目录)。
工具:
gzip、gunzip命令示例:
-
压缩单个文件:
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 高,但速度较慢。
- 同样只能压缩单个文件。
工具:
bzip2、bunzip2命令示例:
-
压缩单个文件:
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 发行版广泛采用。
工具:
xz、unxz命令示例:
-
压缩单个文件:
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 均可直接打开)。
- 压缩率中等,速度适中。
工具:
zip、unzip命令示例:
-
压缩目录:
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.为什么要对文件进行打包后传输/备份,而不是直接传输/备份
- 可以提高传输效率:
- 打包成压缩文件,传输时只需要处理一个文件,而不是逐个处理大量的小文件,这样可以减少建立和断开连接的次数。
- 压缩后文件体积更小,占用更少的数据包数量。
- 可以降低网络拥塞和重传的效率,适合带宽有限和延迟较高的网络环境。
- 节省存储空间:
- 压缩工具可以通过算法去除冗余数据,显著减少文件占用空间。
- 对于需要长期备份的文件(如日志、数据库),压缩后可节省硬盘或云存储成本。
- 保持文件结构完整性
- 打包工具会将文件和目录层级关系完整保存,解压后可还原原始结构,避免手动整理的麻烦。
- 还可以避免文件丢失或损毁,导致文件数据不一致的风险。
- 增加数据安全性
- 部分压缩工具(如
zip、7z)支持密码加密,防止未经授权的访问。 - 压缩包可附加校验信息(如 MD5 校验码),确保传输或备份过程中数据未被篡改。
- 部分压缩工具(如
- 简化管理和维护
- 打包后的单个文件更易于管理(如命名、类名、归档),更适合团队协作和跨系统传输。
- 备份时可为每个版本单独生成独立的压缩包,方便历史版本回溯。
3.打包和压缩有什么区别吗
-
定义与目的
操作 定义 目的 打包 将多个文件或目录合并为一个文件(如 .tar),保留原有结构。简化传输、备份或管理多个文件,减少文件数量。 压缩 通过算法减小文件体积(如 .gz、.xz)。节省存储空间和传输带宽。 -
核心差异
维度 打包 压缩 处理对象 多个文件或目录 → 合并为一个文件(如 tar)。单个文件或已打包的文件 → 压缩体积(如 gzip、bzip2)。是否改变文件结构 保留原有目录结构(如 tar)。不涉及文件结构,仅处理文件内容。 是否减少体积 不减少体积(仅合并文件)。 显著减少体积(通过算法去除冗余数据)。 典型工具 tar、7z(部分工具支持打包和压缩)。gzip、bzip2、xz、zip。 -
典型应用场景
打包(归档)
-
场景:需要保留文件结构或快速备份/传输多个文件。
示例:将
/home/user目录下的所有文件打包为backup.tar。命令:
tar -cvf backup.tar /home/user -
优势:
保留权限、时间戳等元数据。
适合传输大量小文件(减少网络请求次数)。
压缩
-
场景:需要节省存储空间或减少传输数据量。
示例:将
file.txt压缩为file.txt.gz。命令:
gzip file.txt -
优势:
显著减小文件体积(如
.tar.gz压缩率可达 60%~80%)。支持加密(如
zip、7z)。
-
-
打包与压缩的结合使用
在实际应用中,通常先打包后压缩,以兼顾结构保留和体积优化:
-
打包 + 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进行查看。
- 使用命令提示符(CMD):
-
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):数据包从哪个网络接口(如
eth0、wlan0)发送。 - 跃点数(Metric):路径优先级(数值越小优先级越高)。
- 目标网络(Destination):数据包的目标地址或网络段(如
-
默认路由:
默认路由(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 -f,Ctrl+C退出健康模式。 -
适合查看大文件,如日志、代码等。
-
均通过:q退出文件。
10.在vim中如何替换文件中的内容,比如将所有的aaa都替换为bbb
-
sed是最常用的文本替换工具,支持直接修改文件或输出到新文件。语法:
sed -i 's/旧关键字/新关键字/g' 文件名-
替换文件中的所有
aaa为bbb:sed -i 's/aaa/bbb/g' example.txt-i:直接修改原文件(若需备份,可使用-i.bak生成备份文件)。s/aaa/bbb/g:s表示替换,g表示全局替换(一行中所有匹配项)。 -
替换每行第一个匹配项(不加g):
sed -i 's/aaa/bbb/' example.txt -
替换特定行的关键词:
sed -i '3s/old/new/' example.txt # 只替换第3行的第一个匹配项
-
11.在命令行中如何替换呢
-
sed是最常用的文本替换工具,支持直接修改文件或输出到新文件。语法:
sed -i 's/旧关键字/新关键字/g' 文件名-
替换文件中的所有
aaa为bbb:sed -i 's/aaa/bbb/g' example.txt-i:直接修改原文件(若需备份,可使用-i.bak生成备份文件)。s/aaa/bbb/g:s表示替换,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:吉字节 -
按文件内容查找
命令:
grep或find结合-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 支持,但默认未启用)。
如果需要精确的创建时间,可通过debugfs或stat命令查看,但日常查找通常使用mtime或ctime(元数据更改时间)作为替代。命令格式:
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)
-
作用:用于传递网络错误信息和控制消息(如“目标不可达”)。
-
应用:
ping和tracert命令依赖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命令:-
先将任务置于后台:
ping example.com & # 后台运行 -
使用
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:第二列数字(如
-
-
验证 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
-

2010

被折叠的 条评论
为什么被折叠?



