第4节 Linux基本概念
几类服务的配置路径
DNS服务端与DNS客户端配置
shutdown命令集
| 命令选项 | 功能描述 |
|---|---|
shutdown.exe -a |
取消已计划的关机操作 |
shutdown.exe -s |
关闭计算机 |
shutdown.exe -f |
强制关闭所有运行的应用程序后关机 |
shutdown.exe -m \\\计算机名 |
控制远程计算机执行关机、重启等操作 |
shutdown.exe -i |
显示远程关机的图形用户界面(GUI) |
shutdown.exe -l(logout) |
注销当前用户(注意这里的参数是L的小写) |
shutdown.exe -r |
重启计算机 |
shutdown.exe -s -t 时间 |
设置关机倒计时,时间单位为秒 |
shutdown.exe -h |
将计算机进入休眠状态(Windows系统下) |
Linux索引节点
Linux文件系统使用索引节点来记录文件信息,作用类似于Windows下的文件分配表。
索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
系统自动给每个索引节点分配了一个号码,也就是该节点在数组中的索引|号,称为索引节点号。linux文件系统将文件索引节点号和文件名同时保存在目录中。对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
在Linux以及类Unix操作系统中,索引节点(英文称作inode或Inode)是文件系统的核心组成部分之一。它是一种数据结构,用于存储与文件系统中的每个文件或目录相关联的元数据。每个文件或目录在文件系统中都会分配一个唯一的inode号码,这个号码是文件系统内部识别文件的唯一标识。
一个inode包含以下关键信息:
文件类型:指出该inode关联的对象是常规文件、目录、符号链接、套接字、管道或者其他类型的文件。
权限信息:包括文件所有者的权限、所属组的权限以及其他用户的权限。
文件所有者和所有组:分别表示文件拥有者和所属用户组的用户ID和组ID。
大小:记录文件的实际大小(字节数)。
时间戳:通常包括三个时间戳,分别记录文件最后一次访问、修改内容和改变状态(如权限、所有权等)的时间。
链接数:记录指向该inode的硬链接数目,若为目录,则包含子目录和文件的链接数。
数据块指针:inode包含一系列指向文件实际内容所在的磁盘块的指针。在传统文件系统中,这些指针可能是直接指向数据块的;而在现代较大的文件系统中,可能还会包含间接块指针,用于扩展存储能力。
系统并不在inode中存储文件的名称,文件名实际上是存储在目录条目中,目录本身也是一个特殊的文件,其中包含了文件名和对应的inode号码。
当操作系统需要访问某个文件时,首先通过文件路径找到对应的目录条目,然后利用目录条目中的inode号码找到对应的inode,再通过inode中的信息找到文件的实际内容。这样设计的好处在于允许多个文件名(软链接)指向同一个inode,也就是同一个文件实体,同时也使得文件系统的管理更加高效和灵活。
Linux系统目录及其功能
| 路径 | 功能描述 |
|---|---|
/home |
存储普通用户的个人主目录,每个用户都有一个以其用户名命名的子目录,用于保存用户的数据和配置文件。 |
/usr |
包含了大量的系统应用程序和相关资源,诸如应用程序的可执行文件、库文件、帮助文档、示例数据等。 |
/var |
存储系统运行时生成的、经常变化的数据文件,包括日志文件、数据库文件、邮件队列、打印队列、缓存文件等。 |
/dev |
提供系统中各种设备的特殊文件,这些文件代表了硬件设备,通过操作这些文件来控制和访问相应的设备。例如,硬盘、键盘、显示器等。 |
/etc |
系统配置文件的集中存放位置,包含了系统启动、网络配置、用户认证、软件服务等各种服务和系统的配置文件,均为文本格式。 |
/bin |
存放系统的基本二进制可执行文件,这些程序对于系统的正常运行至关重要,且通常在单用户模式下也能正常使用,例如常用命令工具、系统实用程序等。 |
/sbin |
/Linux的/sbin目录是专门用于存放系统级的二进制可执行文件的目录,这些文件通常是系统管理员(root用户)在系统启动、维护和修复过程中使用的工具,或者是进行系统级别设置和管理所需的命令。由于这些命令涉及到底层系统操作和关键性的系统配置,因此它们对于系统的正常运行和安全性极为重要。 不同于/bin目录中的命令,/sbin中的命令并不频繁地被普通用户所直接调用,而是主要用于执行诸如启动和停止系统服务、配置硬件设备、修改系统运行状态等高级管理任务。例如,常见的/sbin目录下的命令有init、fsck、mkfs、iptables、route等。这些命令通常要求更高的权限才能执行,因此普通用户在没有获得相应权限的情况下无法直接运行/sbin目录下的程序。 |
/etc/dhcpd.conf文件详解
在Linux系统中,/etc/dhcpd.conf 是DHCP服务器(Dynamic Host Configuration Protocol Daemon,简称dhcpd)的主配置文件,用于定义DHCP服务器的行为规则和服务范围。这个文件决定了DHCP服务器如何动态分配IP地址、子网掩码、默认网关、DNS服务器信息以及其他网络配置参数给连接到网络中的客户端。
/etc/dhcpd.conf 文件的结构和主要配置内容包括以下几个方面:
全局配置参数
ddns-update-style:决定DHCP服务器与DNS服务器之间的交互模式,用于动态更新DNS记录。default-lease-time:设定客户端默认获得IP地址的租赁时间长度,超过这段时间后客户端需续租或重新获取IP地址。max-lease-time:设置客户端可以获得的最大租赁时间长度。authoritative:声明DHCP服务器是否具有网络内的权威地位,如果设置为yes,则只处理匹配其配置的DHCP请求。
子网声明(subnet声明)
subnet:定义一个子网,包括网络地址、子网掩码以及该子网的相关参数。1
2
3subnet 192.168.1.0 netmask 255.255.255.0 {
# ...在此区块内定义该子网的DHCP参数...
}
地址池(pool声明)
pool:定义一个IP地址池,从中分配给DHCP客户端。1
2
3pool {
range dynamic-bootp 192.168.1.100 192.168.1.200;
}
固定IP地址分配(host声明)
host:为特定的客户端分配固定的IP地址,通常通过MAC地址来标识客户端。1
2
3
4host my-host {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.10;
}
选项设置
option:设置客户端需要的网络参数,例如:domain-name: 设置DNS域名。domain-name-servers: 指定DNS服务器地址。broadcast-address: 指定广播地址。router: 设置默认网关地址。netmask: 设置子网掩码。filename: 用于无盘工作站的启动文件名称。
其他配置
next-server:指定引导文件服务器的IP地址。server-name:告知DHCP客户端服务器的名称。
在配置完成后,需要重启DHCP服务器服务以使更改生效,通常使用命令:
1 | sudo systemctl restart isc-dhcp-server.service |
或
1 | service dhcpd restart |
具体命令取决于系统使用的初始化系统。
总之,/etc/dhcpd.conf 文件是用来精细控制DHCP服务器如何自动化分配网络配置的重要配置文件,确保网络中的设备能够自动获取正确的网络参数,并保证网络资源的有效管理和分配。
init进程
init进程是Linux操作系统中非常重要的一个进程,也是整个系统启动后的第一个用户级进程,其进程ID(PID)总是固定为1。init进程在内核完成初始化后被创建,扮演着所有其他用户进程的祖先角色,因此被称为“进程树的根”。
作用与特点:
终极父进程:当一个进程结束,其子进程如果没有其他父进程接管,将会被init进程收养,也就是说init进程负责收集孤儿进程。
系统初始化:init进程在系统启动阶段承担了许多关键的初始化工作,如挂载根文件系统、执行开机脚本、启动各种系统服务等。
运行级别管理:早期Linux系统中,init负责根据预设的运行级别(runlevel)启动和停止不同的服务及后台进程。运行级别定义了系统启动后的一系列状态,如多用户模式、单用户模式、重启、关机等。
控制终端启动:init进程还负责启动getty程序(或其替代品),以便在终端和虚拟控制台上等待用户登录。
随着Linux内核和系统管理工具的发展,init进程的功能和实现逐渐发生了变化。在较新的Linux发行版中,init进程已经被像systemd这样的系统和服务管理器取代,systemd提供了更为强大的并发启动服务、目标导向的依赖管理和更多的系统集成特性。然而,即使在systemd环境下,init的概念仍然存在,systemd自身也承担了原来init进程的很多核心职责。
历史演变:
- System V init是经典Unix系统中广泛使用的init实现,其配置文件通常位于
/etc/inittab中。- Upstart曾在一段时间内作为Linux内核项目的一个过渡方案,旨在改进init进程的启动速度和灵活性。
- 后来,systemd因其强大的功能和更好的性能逐步成为主流Linux发行版的首选init系统。
总结来说,init进程或其现代替代品(如systemd)在Linux系统中起到至关重要的作用,它们不仅是系统启动过程中的核心,还负责系统运行期间的许多关键服务管理和维护工作。
init 0命令扩展
Linux root用户执行init 0命令意味着什么
在Linux系统中,当root用户执行
init 0命令时,意味着系统将会执行关机操作。这个命令告诉init系统转换到运行级别0,即系统关机级别。在这个级别下,init进程会依次执行一系列清理和关闭操作,包括但不限于:
- 停止非必要的系统服务和守护进程。
- 卸载文件系统,确保所有数据正确写入磁盘。
- 断开网络连接。
- 最终触发内核执行真正的硬件关机指令,切断电源供应,使得整个系统完全关闭。
执行
init 0命令需要具有root权限,因为关机操作涉及到系统的全局状态变更和安全性考虑。此外,在某些Linux发行版中,为了更好地管理关机流程和通知系统中正在运行的服务,可能会推荐使用shutdown命令替代,例如shutdown -h now命令也会立即关机,同时可以提供更多选项来安排定时关机或发送关机前的通知给在线用户。
介绍init系统的运行级别
init系统在传统的Linux系统中(特别是基于System V init或其变体的系统)扮演着核心的角色,负责管理系统启动、运行时状态转换以及关机等关键过程。运行级别是init系统中的一种机制,用来定义系统在不同状态下应启动哪些服务和执行哪些动作。以下是init系统典型的七个运行级别及其含义:
运行级别0 (Runlevel 0):系统关机(halt)。在这个级别下,init会关闭系统并切断电源(在支持硬件控制的情况下)。
运行级别1 (Runlevel 1):单用户模式(Single-User Mode)。在这个级别下,系统仅启动最小化的必要服务,通常用于系统维护或故障排查,只有一个超级用户(root)可以登录。
运行级别2 (Runlevel 2):无网络多用户模式(Multi-User Mode without Networking)。在这个级别下,系统启动了多用户环境,但不启动网络服务。
运行级别3 (Runlevel 3):全功能多用户模式(Multi-User Mode with Networking)。这是最常见的运行级别,系统启动全部必要的服务,并启动网络服务,允许多个用户通过终端或网络登录。
运行级别4 (Runlevel 4):在一些早期的Linux发行版中,这个级别与运行级别3相似,但在现代Linux发行版中,通常未被使用或与运行级别3合并。
运行级别5 (Runlevel 5):图形化登录模式(Graphical Target)。在这个级别下,系统除了启动多用户模式外,还会启动图形界面,如X Window System,让用户可以使用图形化的桌面环境。
运行级别6 (Runlevel 6):系统重启(reboot)。init会执行一系列的清理和关闭操作后重新启动系统。
在systemd成为主流Linux初始化系统之后,运行级别的概念有所变化,systemd引入了目标(targets)的概念,替代了传统的运行级别。但上述的运行级别在一些依然沿用传统init系统的Linux发行版中仍然适用。在systemd中,对应的功能通过
multi-user.target,graphical.target,emergency.target等target实现。
ps命令详解
ps命令显示系统正在运行的进程,参数:e列出系统所有的进程,f列出详细清单。
显示各列为:
| 属性 | 描述 |
|---|---|
| UID | 用户ID,标识运行进程的用户账户 |
| PID | 进程ID,每一个进程在系统中的唯一标识符 |
| PPID | 父进程ID,标识该进程是由哪个进程创建的 |
| C | CPU利用率,进程占用CPU资源的百分比(在某些情况下,如ps命令的输出中,C列可能表示CPU使用率) |
| STIME | 开始时间,进程启动的时间,通常显示为系统启动后经过的时间或绝对时间 |
| TTY | 终端或伪终端,进程与之关联的终端设备,若进程无终端关联则可能显示为问号(?)或其它字符 |
| TIME | CPU时间,进程消耗的CPU时间总量,通常以用户态时间(UTime)和系统态时间(STime)的形式展示 |
| CMD | 命令名称和参数,启动该进程所使用的命令和命令行参数 |
请注意,“C”列在不同的上下文中可能有不同的含义,有的时候它表示的是进程优先级(nice值),而非CPU使用率,具体情况需要参照具体命令的输出格式和选项。在ps命令的某些格式输出中,CPU使用率通常会以”%CPU”字段标识。