1./dev/zero和/dev/null是什么?
在类Unix系统中,/dev/zero
和 /dev/null
都是特殊的设备文件,但它们有不同的作用,简单来说:
/dev/zero
是一个提供零字节的设备。/dev/null
是一个丢弃数据的“黑洞”设备
-
/dev/zero
:-
是一个生成连续零字节的虚拟设备。
-
你可以将它用于填充文件,或者需要给某个程序提供一段全零的输入。
-
示例:用
dd
命令将/dev/zero
的内容写入一个文件(例如,创建一个大小为 1GB 的全零文件)。Terminal window dd if=/dev/zero of=zero_file bs=1M count=1024
-
-
/dev/null
:-
是一个“黑洞”设备,它会丢弃所有写入它的数据,相当于一个空输出。
-
任何写入
/dev/null
的数据都会被丢弃,而且它是一个无限大的设备,所以可以无穷无尽地写入数据而不会引发问题。 -
通常用于丢弃不需要的输出,或者作为命令行参数来忽略某些输入。
-
示例:将命令输出丢弃到
/dev/null
:Terminal window # 这个命令将标准输出和标准错误输出都丢弃some_command > /dev/null 2>&1-
>
:覆盖写入(这里和追加写入也没区别了) -
2>&1
(标准错误重定向):-
2>
:这里的2
是文件描述符(File Descriptor)。在 Linux 中:0
代表标准输入(stdin)1
代表标准输出(stdout)2
代表标准错误(stderr)
所以
2>
表示重定向标准错误。 -
&1
:这里的&1
不是一个文件,而是指向文件描述符 1 当前目的地的指针。 -
合起来:
2>&1
的意思是 “将标准错误(2)重定向到(&)标准输出(1)当前所指向的同一个地方”。
-
-
-
2.如何查看硬盘的分区,以及当前系统磁盘使用大小?
df -Th
:看整个分区-h
选项代表 “Human-readable”,以易读的单位(G, M, K)显示大小-T
显示文件系统类型(Type),如 ext4, xfs, tmpfs 等
du -sh
:看特定目录或文件占用空间-s
:显示总和,不显示子目录详情。-h
:人性化显示单位。- 例如:
du -h /home --max-depth=1 | sort -h
- 查看
/home
目录下所有文件和子目录的大小,并排序 --max-depth=1
:只深入到第 1 级子目录。
- 查看
3.创建一块新硬盘,1G大小,挂载到/opt/mydir目录,并设置为开机启动挂载?
1.创建虚拟硬盘文件
用 dd
命令从 /dev/zero
读取数据,创建一个充满空字节的 1GB 文件
sudo dd if=/dev/zero of=/opt/mynewdisk.img bs=1M count=1024
if=/dev/zero
:输入源,提供无限的零字节。of=/opt/mynewdisk.img
:输出文件,我们创建的“硬盘”文件路径和名称。bs=1M
:块大小,每次读写 1 MiB。count=1024
:块数量。1M * 1024 = 1024MB ≈ 1GB。
Linux 可以将一个文件虚拟成块设备,文件关联为loop设备
sudo losetup -fP /opt/mynewdisk.img
-f
:查找第一个可用的 loop 设备。-P
:强制内核在设备上扫描分区表,这是关键参数,否则分区(如loop0p1
)可能不会立即出现。
查看使用了哪个loop设备:
losetup -a
# 输出如下/dev/loop1: [64768]:789541 (/var/lib/snapd/snaps/lxd_29351.snap)/dev/loop6: [64768]:786637 (/var/lib/snapd/snaps/snapd_25202.snap)/dev/loop4: [64768]:789408 (/var/lib/snapd/snaps/core20_2599.snap)/dev/loop2: [64768]:1704148 (/opt/mynewdisk.img)/dev/loop0: [64768]:789540 (/var/lib/snapd/snaps/core20_2318.snap)/dev/loop5: [64768]:788501 (/var/lib/snapd/snaps/lxd_31333.snap)/dev/loop3: [64768]:787239 (/var/lib/snapd/snaps/snapd_24792.snap)
可以发现使用的loop设备为/dev/loop2
2.分区
使用 fdisk
对刚刚关联的 loop 设备(例如 /dev/loop2
)进行分区
fdisk /dev/loop2
在 fdisk
的交互界面中,依次输入以下命令:
n
:创建新分区。p
:选择主分区。1
:分区号设为 1。- 回车:接受第一个扇区的默认值。
- 回车:接受最后一个扇区的默认值(使用整个磁盘)。
w
:将分区表写入磁盘并退出。
3.格式化
格式化新创建的分区为 ext4 文件系统:
mkfs.ext4 /dev/loop2
4.创建挂载点
没有这个/opt/mydir
,创建一个
5.临时挂载
mount /dev/loop2 /opt/mydir
6.配置开机自动挂载
编辑 /etc/fstab
文件,在文件末尾添加一行:
/dev/loop2 /opt/mydir ext4 defaults 0 2
/dev/loop2
:新硬盘分区/opt/mydir
:挂载点ext4
:文件系统类型defaults
:挂载选项,表示使用默认设置0
:表示不需要在启动时进行备份(dump)2
:表示在启动时自动进行文件系统检查
7.验证
用以下指令判断修改后的配置文件是否正确:
# 如果没有任何错误输出,则配置正确mount -a
检查是否挂载到/opt/mydir
:
df -Th
# 输出带有这行,说明没有问题Filesystem Type Size Used Avail Use% Mounted on/dev/loop2 ext4 974M 24K 907M 1% /opt/mydir
4.使用dd命令,在/opt/mydir目录中写入一个200M大小的文件?
sudo dd if=/dev/zero of=/opt/mydir/file_200MB bs=1M count=200
if=/dev/zero
:输入文件是/dev/zero
,它会生成零字节的数据。of=/opt/mydir/file_200MB
:输出文件路径,即将在/opt/mydir
目录下创建一个名为file_200MB
的文件。bs=1M
:设置块大小为 1MB。count=200
:表示写入 200 个块,因此文件的总大小将为 200MB
5.如何查看当前系统内存使用大小?
-
free
命令:Terminal window free -h-h
参数表示以人类可读的格式(如 MB、GB)显示内存信息。- 输出结果包括:
- total:总内存大小。
- used:已使用的内存大小。
- free:空闲内存大小。
- shared:共享内存大小。
- buffers:用于缓存的内存大小。
- cached:用于缓存的内存(文件系统缓存)大小。
-
htop
命令
6.如何查看系统负载?系统负载为10,表示什么含义,是高还是低?
查看系统负载
-
uptime
:显示系统的当前时间、运行时间、当前用户数、平均负载(1分钟、5分钟、15分钟) -
top
-
sar -q
-
安装:
apt install sysstat
-
启用数据收集:
vim /etc/default/sysstat
,将以下字段改为true:ENABLE="true"
-
重启
sysstat
服务:systemctl restart sysstat
-
sar -u 1 3
:每秒钟收集一次 CPU 使用情况,总共收集三次输出如下:
Terminal window Linux 5.15.0-152-generic (i3-1215u) 08/23/2025 _x86_64_ (8 CPU)06:18:12 AM CPU %user %nice %system %iowait %steal %idle06:18:13 AM all 0.50 0.00 0.25 0.00 0.00 99.2506:18:14 AM all 0.38 0.00 0.50 0.00 0.00 99.1206:18:15 AM all 0.25 0.00 0.37 0.00 0.00 99.38- %user:用户态 CPU 时间的百分比,表示 CPU 在运行用户空间进程的时间。
0.50%
表示 CPU 运行用户进程的时间占总时间的 0.50%。 - %nice:用户进程的优先级调整时间百分比。
0.00%
表示没有任何时间被用于调整优先级的进程。 - %system:内核态 CPU 时间的百分比,表示 CPU 在运行内核空间进程的时间。
0.25%
表示 CPU 运行内核进程的时间占总时间的 0.25%。 - %iowait:等待 I/O 操作的 CPU 时间百分比,表示 CPU 等待磁盘或其他 I/O 操作的时间。
0.00%
表示没有时间等待 I/O 操作。 - %steal:虚拟机环境中被其他虚拟机占用的 CPU 时间百分比。
0.00%
表示没有其他虚拟机占用 CPU 时间。 - %idle:空闲 CPU 时间的百分比,表示 CPU 没有被任何进程占用的时间。
99.25%
表示 CPU 的 99.25% 时间处于空闲状态。
- %user:用户态 CPU 时间的百分比,表示 CPU 在运行用户空间进程的时间。
-
-
vmstat 1
:看CPU、内存、磁盘I/O负载r
:表示正在运行和等待运行(就绪队列) 的进程数- 如果
r
的值持续大于你机器的 CPU逻辑核心数,说明CPU已经饱和,进程开始在运行队列中排队,这是CPU负载高的明确信号
- 如果
b
:表示处于不可中断睡眠(uninterruptible sleep) 状态的进程数。- 如果
b
的值持续大于0,说明有进程因为等待I/O而阻塞,这是I/O负载高的强烈指示
- 如果
us
(user):用户态进程占用CPU时间的百分比。值高表示应用程序本身很繁忙。sy
(system):内核态占用CPU时间的百分比。值高表示系统调用频繁,或者内核在处理中断、调度等。id
(idle):CPU空闲时间的百分比。这是最重要的指标之一。id
值持续很低(例如低于10%或20%)意味着CPU资源紧张,负载高。wa
(I/O wait):CPU等待I/O完成的时间百分比。这是诊断I/O瓶颈的黄金指标。wa
值高(例如 > 5-10%) 意味着CPU经常闲着没事干,因为它在等待慢速的磁盘I/O操作。这明确指示系统的负载瓶颈在磁盘I/O上,而不是CPU计算能力
st
(steal):在虚拟化环境中,被宿主机“偷走”的CPU时间百分比。值高表示你的虚拟机正在和其他虚拟机激烈争夺物理CPU资源。
系统负载10的含义
- 如果你的系统只有 1 个 CPU 核心,负载为 10 表示 CPU 被过度占用,系统可能会变得非常缓慢。
- 如果你的系统有 10 个 CPU 核心,负载为 10 表示每个 CPU 核心平均有一个任务在处理,这通常是一个正常的负载。
- 如果你的系统有 更多的核心(比如 20 核或 40 核),负载为 10 就显得比较低了,说明系统比较空闲。
- 负载为 10 是高还是低,完全取决于你有多少个 CPU 核心
7.系统负载与CPU使用率有什么关联?
- CPU 使用率 反映 CPU 的实际使用情况,通常与系统负载成正比。
- 系统负载 反映的是 CPU 和其他资源(如 I/O)需求的程度,可能与 CPU 使用率不完全一致。
- 高负载不一定意味着高 CPU 使用率,可能是 I/O 或其他瓶颈导致的进程积压。
- CPU负载
- 内存负载
- 磁盘I/O负载
8.如何查看本机启动了哪些端口?如何使用telnet测试端口是否连通?
-
netstat
命令Terminal window netstat -tuln-
-t
:显示 TCP 连接。 -
-u
:显示 UDP 连接。 -
-l
:显示监听状态的端口。 -
-n
:以数字形式显示端口和 IP 地址,而不进行 DNS 查询
-
-
ss
命令Terminal window ss -tuln -
使用
telnet
测试端口是否连通-
测试本机或远程端口
Terminal window telnet <hostname or IP> <port>-
例如:
Terminal window # 测试本机 80 端口(HTTP 服务)是否开放telnet 127.0.0.1 80# 测试远程主机的某个端口(例如,测试 baidu 的 80 端口)telnet www.baidu.com 80 -
连接成功输出:
Terminal window Trying 2409:8c00:6c21:11eb:0:ff:b0bf:59ca...Connected to www.baidu.com.Escape character is '^]'. -
连接失败输出:
Terminal window Trying 192.168.0.105...telnet: Unable to connect to remote host: Connection refused
-
-
在
telnet
会话中,按Ctrl + ]
然后输入quit
退出连接
-
9.什么是域名,什么是dns,什么是hosts?
域名:人类可读的地址,例如 www.example.com
。
DNS:将域名解析为 IP 地址的系统。
- DNS 是互联网的 “电话簿”,它将易记的域名(如
www.google.com
)转换为计算机可以理解的 IP 地址
hosts 文件:本地文件,用于手动配置域名与 IP 地址的映射,通常优先于 DNS 查询。
10.一个域名是如何进行解析的?
- hosts文件(手动指定的映射)优先级最高:如果
/etc/hosts
或C:\Windows\System32\drivers\etc\hosts
中有匹配的域名记录,则直接使用该IP地址,跳过DNS缓存
和DNS服务器查询
- 本地缓存检查:操作系统首先检查本地缓存和
hosts
文件是否已有www.baidu.com
的 IP 地址。 - DNS 服务器查询:如果缓存和
hosts
文件都没有,操作系统会向 DNS 服务器查询。 - 递归查询:
- 根 DNS 服务器:返回
.com
TLD 服务器的地址。 .com
TLD 服务器:返回baidu.com
的权威 DNS 服务器的地址。- 权威 DNS 服务器:返回
www.baidu.com
对应的 IP 地址。
- 根 DNS 服务器:返回
- 结果返回:本地 DNS 服务器将 IP 地址返回给操作系统,操作系统将该地址提供给浏览器。
- 浏览器访问:浏览器使用该 IP 地址访问百度网站。
11.如何设置使用的DNS地址?
通过 systemd-resolved
配置 DNS(Ubuntu 18.04 及之后版本):
vim /etc/systemd/resolved.conf
在文件中找到并取消注释 DNS
和 FallbackDNS
行,并添加想使用的 DNS 地址:
[Resolve]DNS=8.8.8.8 114.114.114.114FallbackDNS=1.1.1.1 1.0.0.1
重新启动 systemd-resolved
服务:
systemctl restart systemd-resolved
使用 dig
或 nslookup
命令检查 DNS 是否工作正常:
dig @8.8.8.8 www.baidu.com
如果输出从 DNS 服务器返回的 IP 地址,说明 DNS 配置已经生效
12.dig与nslookup有什么区别,什么场景下使用?
特性 | nslookup | dig |
---|---|---|
默认输出 | 显示基本的 DNS 解析结果(如 IP 地址)。 | 显示更详细的 DNS 解析过程,包括查询类型、响应时间等。 |
支持的查询类型 | 支持常见的查询类型(A、AAAA、MX、NS)。 | 支持更多的查询类型(A、AAAA、MX、NS、CNAME 等)。 |
详细信息 | 返回的默认信息比较简单,缺少很多诊断信息。 | 返回的信息非常详细,适合进行 DNS 故障排查。 |
查询时间 | 查询速度较快,但不显示具体的响应时间。 | 返回查询时间等详细信息,适合进行性能分析。 |
可扩展性 | 功能简单,扩展性较差。 | 灵活且支持扩展,能通过多种选项自定义查询行为。 |
交互模式 | 支持交互模式,适合手动进行多次查询。 | 不支持交互模式,主要用于一次性查询。 |
nslookup
的使用场景:nslookup www.baidu.com
- 基础的 DNS 查询:如果你只需要简单的域名解析(如查询 IP 地址),
nslookup
足够用。 - 交互式查询:当你需要反复查询不同的 DNS 记录时,可以使用
nslookup
的交互模式。 - 快速测试:在一些快速测试和小范围的 DNS 查询中,
nslookup
提供了足够的功能。
- 基础的 DNS 查询:如果你只需要简单的域名解析(如查询 IP 地址),
dig
的使用场景:dig www.baidu.com
- 详细的 DNS 调试和故障排查:
dig
的输出包含了查询状态、响应时间、DNS 服务器信息等,适合进行复杂的 DNS 故障排查。 - 多种 DNS 查询类型:当你需要查询不同类型的 DNS 记录(如
MX
,NS
,CNAME
,TXT
等)时,dig
提供了更强的功能。 - 性能分析:
dig
返回的查询时间和服务器信息可以帮助你分析 DNS 响应的性能。 - 自动化脚本和监控:由于
dig
支持更详细的输出,常用于脚本化的 DNS 查询和自动化监控。
- 详细的 DNS 调试和故障排查:
13.什么是三次握手和四次挥手,什么场景下使用?
三次握手是 TCP 建立连接的过程,通过三个数据包交换来确保客户端和服务器之间的连接可靠。
- 第一次握手:服务器处于listen状态,客户端处于closed状态,客户端向服务器发送一个SYN报文,SYN标志位置为1,携带客户端的初始化序列号ISN,然后进入SYN_SENT状态
- 第二次握手:服务器收到来自客户端的SYN报文后,向客户端返回一个SYN+ACK报文,将SYN和ACK标志位置为1,然后携带服务器的初始化序列号,ack确认号等于客户端发来的seq+1,然后进入SYN_RECEIVED状态
- 第三次握手:客户端收到服务器的报文后,向服务器返回一个ACK报文,ack确认号等于服务器发来的seq+1,然后进入ESTABLISHED状态,服务器收到这个ACK报文后也进入ESTABLISHED状态,连接建立完成
四次挥手是 TCP 断开连接的过程,用来优雅地关闭连接,确保数据已经完全传输完毕
-
FIN(结束):客户端发送一个 FIN 包,表示客户端没有数据要发送了,准备关闭连接。客户端进入 FIN_WAIT_1 状态。
-
ACK(确认):服务器收到 FIN 包后,发送一个 ACK 包确认客户端的关闭请求。此时,服务器进入 CLOSE_WAIT 状态,客户端进入 FIN_WAIT_2 状态。
-
FIN(结束):服务器也发送一个 FIN 包,表示服务器没有数据要发送,准备关闭连接。此时服务器进入 LAST_ACK 状态,等待客户端的确认。
-
ACK(确认):客户端收到服务器的 FIN 包后,发送一个 ACK 包确认服务器的关闭请求。此时客户端进入 TIME_WAIT 状态,等待足够时间以确保服务器收到了最后的 ACK 包,然后彻底关闭连接。服务器收到 ACK 包后进入 CLOSED 状态,连接完全断开。
14.TCP和UDP的区别是什么?它们分别适用于什么场景?
特性 | TCP | UDP |
---|---|---|
连接性 | 面向连接,通信前需要建立连接(通过三次握手)。 | 无连接,不需要建立连接,直接发送数据。 |
可靠性 | 提供可靠的数据传输,保证数据按顺序到达,若丢失会重传。 | 不保证数据到达,也不保证顺序,数据可能丢失。 |
流量控制 | 支持流量控制和拥塞控制,确保网络负载合理。 | 不提供流量控制和拥塞控制。 |
传输顺序 | 保证数据按发送顺序到达接收端。 | 不保证数据的顺序,数据可能乱序到达。 |
错误检查 | 提供错误检查和纠正机制。 | 提供简单的错误检查,若发生错误不进行纠正。 |
速度 | 由于需要建立连接、确认数据和重传机制,相对较慢。 | 传输速度较快,因为没有连接建立和重传机制。 |
头部开销 | 头部较大,包含序列号、确认号、校验和、标志位等。 | 头部较小,只有必要的源端口、目的端口、长度和校验和。 |
适用场景 | 适合需要高可靠性、顺序传输和重传机制的场景。 | 适合实时性要求高,但不要求可靠传输的场景。 |
TCP适用场景:
- Web浏览(HTTP/HTTPS):用户请求网页时需要保证数据的完整性和顺序。
- 文件传输(FTP):需要确保文件数据的完整传输。
- 电子邮件(SMTP):邮件传输时需要确保可靠性。
- 远程登录(SSH、Telnet):保证输入输出数据的正确顺序和完整性。
- 数据库应用:需要可靠的数据传输,保证操作的顺序性。
UDP适用场景:
- 视频会议:实时性要求高,但丢失少量数据不会影响体验。
- 在线游戏:需要低延迟,不关心个别数据包是否丢失。
- 实时流媒体:如直播、视频点播,数据丢失对质量影响较小。
- DNS 查询:DNS 查询小数据包,要求快速响应,UDP 的低开销适合此场景。
- VoIP(语音通信):实时性是关键,少量丢包不会影响通话质量。
15.UDP会进行握手吗?
不会,UDP协议是一个无连接的协议,不可靠,只保证最大程度传输,如果丢包是不会重传的,既可以一对多,也可以多对一,所以是不需要握手的
16.哪些服务会使用UDP协议?
-
DNS(域名系统)
-
用途:DNS 用于将域名解析为 IP 地址。
-
原因:DNS 查询通常较小且对时效性要求高,使用 UDP 可以减少延迟,且丢失少量数据包通常不会造成严重影响。DNS 响应不需要保证顺序,若丢包可以重新发送请求。
-
-
DHCP(动态主机配置协议)
- 用途:DHCP 用于在网络中自动分配 IP 地址和其他网络配置。
- 原因:DHCP 使用 UDP 主要是为了节省开销并提高速度。由于 DHCP 请求和响应过程通常较短,且在网络配置过程中丢失一个包可以快速重发。
-
SNMP(简单网络管理协议)
-
用途:SNMP 用于监控和管理网络设备。
-
原因:SNMP 使用 UDP 传输数据,因为管理信息通常是小数据量的查询和响应,对丢包的容忍度较高,且实时性更重要。
-
-
TFTP(简易文件传输协议)
- 用途:TFTP 是一种简化版的 FTP,用于文件的简单传输。
- 原因:TFTP 用于低复杂度、低带宽的文件传输,通常在嵌入式设备、网络引导或设备固件更新时使用。由于它的目标是简化和快速传输,因此使用 UDP 进行高效的数据传输。
-
RIP(路由信息协议)
- 用途:RIP 是一种动态路由协议,用于在路由器之间交换路由信息。
- 原因:RIP 使用 UDP 来快速交换路由信息,允许路由器及时更新网络拓扑。如果丢失路由信息包,协议会在下一轮周期中重新发送。
17.视频通话会使用TCP还是UDP?文字消息呢?
视频通话会使用UDP,因为视频通话中丢失个别数据包不影响整体的体验,
18.解释ps -aux所有字段的含义
字段如下:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER
- 含义:进程所属的用户(即启动该进程的用户)
- 示例:
root
、user1
。
- PID
- 含义:进程的唯一标识符(进程ID)。
- 示例:
1234
。 - 用途:通过 PID 可以跟踪、管理或结束特定进程。
- %CPU
- 含义:进程使用的 CPU 时间百分比。
- 示例:
0.5
表示该进程使用了 0.5% 的 CPU 时间。 - 注意:该值是进程当前占用 CPU 的比例,可能会随时间波动。
- %MEM
- 含义:进程使用的物理内存百分比。
- 示例:
1.2
表示该进程占用了 1.2% 的系统内存。 - 注意:这个字段显示的是进程占用的物理内存占总内存的比例。
- VSZ
- 含义:进程使用的虚拟内存的大小(单位:KB)。
- 示例:
123456
表示该进程使用了 123456 KB(约 120 MB)的虚拟内存。 - 说明:包括进程的所有内存,如共享库、代码、栈、堆等。
- RSS
- 含义:进程实际占用的物理内存的大小(单位:KB)。
- 示例:
9876
表示该进程实际占用了 9876 KB(约 9.7 MB)的物理内存。 - 说明:与
VSZ
不同,RSS
只考虑进程使用的实际物理内存,不包括交换区(swap)。
- TTY
- 含义:进程所属的终端(TTY 是 “teletypewriter” 的缩写)。
- 示例:
tty1
、pts/0
。 - 说明:如果进程没有控制终端,通常显示为
?
。
- STAT
- 含义:进程的状态。
- 常见的值:
R
:正在运行(Running)。S
:睡眠(Sleeping)。D
:不可中断睡眠(Uninterruptible sleep,通常是等待磁盘IO)。Z
:僵尸进程(Zombie)。T
:停止状态(Stopped)。I
:空闲状态(Idle)。
- 示例:
S
表示进程处于睡眠状态。
- START
- 含义:进程启动的时间。
- 示例:
09:30
或Mar10
。 - 说明:显示进程启动的具体时间。如果进程启动时间超过 24 小时,则显示日期。
- TIME
- 含义:进程使用的总 CPU 时间(单位:分钟:秒)。
- 示例:
00:02.5
表示进程已经使用了 2.5 秒的 CPU 时间。 - 说明:这个字段累计了进程的 CPU 时间。
- COMMAND
- 含义:启动进程的命令行。
- 示例:
/usr/bin/firefox
或bash
。 - 说明:显示启动该进程的完整命令和其参数。
19.Linux中如何判断上一条命令是否执行成功?
在 Linux 中,可以通过检查 退出状态码(Exit Status)来判断上一条命令是否执行成功。
-
查看
$?
变量-
$?
是一个特殊变量,表示上一条命令的退出状态码。 -
返回值:
0
:表示命令执行成功(没有错误)。- 非
0
值:表示命令执行失败,具体的错误码取决于命令的执行情况。
-
例如:
Terminal window ls -lh&?# 输出0
-
-
通过
&&
或者||
判断-
&&
:如果前一个命令成功(返回0
),则执行后面的命令。 -
||
:如果前一个命令失败(返回非0
),则执行后面的命令。 -
例如:
Terminal window ls -lh && echo "命令成功"# 输出命令成功
-
20.如何修改系统默认时区,并同步网络时间?
修改系统默认时区:
-
查看当前时区:
timedatectl这将显示当前的日期、时间、时区、NTP(网络时间协议)同步状态等信息。
-
列出可用的时区:
timedatectl list-timezones这将列出所有支持的时区,你可以从中找到你需要的时区,例如:
Asia/Shanghai
、Europe/London
等。 -
设置时区: 假设你想设置时区为
Asia/Shanghai
,可以执行以下命令:sudo timedatectl set-timezone Asia/Shanghai这将立即更改系统的时区设置。
同步网络时间:
-
启用 NTP 同步: 使用以下命令启用自动时间同步:
sudo timedatectl set-ntp true -
检查 NTP 状态: 要查看 NTP 是否启用,可以运行:
timedatectl在输出中,如果 NTP 同步已启用,你将看到类似
NTP synchronized: yes
的行。 -
使用 NTP 服务同步时间(如果需要): 如果你的系统没有启用 NTP,你可以手动同步时间,运行以下命令:
sudo ntpdate pool.ntp.org这将从 NTP 服务器
pool.ntp.org
获取当前时间并同步系统时间。
21.如何使用curl访问页面?
- 基本访问:
curl http://example.com
- 保存内容:
curl -o filename http://example.com
- 查看响应头:
curl -I http://example.com
- 发送 POST 请求:
curl -X POST -d "name=John" http://example.com
- 设置请求头:
curl -H "Authorization: Bearer YOUR_TOKEN" http://example.com
22.如何使用curl和wget来下载文件到本地?
-
curl -O http://example.com/file1.zip -O http://example.com/file2.zip
-
wget http://example.com/file.zip
-
下载多个文件,将所有的URL放入一个文本中,然后
wget -i urls.txt
-
可以中断后继续下载:
wget -c http://example.com/largefile.zip
-
显示进度条:
curl -# -O http://example.com/file.zip