一、引言
在 Linux 系统中,系统管理是一项至关重要的任务,它涉及到进程和服务的管理、系统运行级别的控制以及关机重启等操作。本文将详细介绍 Linux 系统管理的基础知识,帮助读者更好地理解和掌握 Linux 系统的管理技巧。
二、Linux 中的进程和服务
2.1 进程
在计算机中,一个正在执行的程序或命令被叫做 “进程”(process)。进程是系统进行资源分配和调度的基本单位。
2.2 服务
启动之后一直存在、常驻内存的进程,一般被称作 “服务”(service)。服务通常在系统启动时自动启动,并在后台持续运行,为系统提供各种功能。
三、systemctl 服务管理
3.1 CentOS 7 的服务管理特点
CentOS 7 使用 Systemd 管理守护进程。采用 systemd 管理的服务独立运行在内存中,服务响应速度快,但占用更多内存。独立服务的服务启动脚本都在目录 /usr/lib/systemd/system
里。Systend 具有以下新特性:
- 系统引导时实现服务的并行启动;
- 按需激活进程;
- 系统实现快照;
- 基于依赖关系定义服务的控制逻辑。
3.2 systemctl 参数说明
3.2.1 基本语法
systemctl start | stop | restart | status | reload 服务名
systemctl
指令管理的服务在 /usr/lib/systemd/system
,查看服务的方法:pwd /usr/lib/systemd/system
3.2.2 参数列表
参数 | 参数说明 |
---|---|
start | 立刻启动后面接的 unit |
stop | 立刻关闭后面接的 unit |
restart | 立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思 |
reload | 不关闭后面接的 unit 的情况下,重载配置文件,让设定生效 |
enable | 设定下次开机时,后面接的 unit 会被启动 |
disable | 设定下次开机时,后面接的 unit 不会被启动 |
status | 目前后面接的这个 unit 的状态,会列出是否正在执行、是否开机启动等信息。 |
is-active | 目前有没有正在运行中 |
is-enable | 开机时有没有预设要启用这个 unit |
kill | 向运行 unit 的进程发送信号 |
show | 列出 unit 的配置。 |
mask | 注销 unit,注销后你就无法启动这个 unit 了 |
unmask | 取消对 unit 的注销 |
list-units | 依据 unit 列出目前有启动的 unit。若加上 –all 才会列出没启动的。(等价于无参数) |
list-unit-files | 列出所有已安装 unit 以及他们的开机启动状态(enabled、disabled、static、mask)。 |
–type=TYPE | 就是 unit type,主要有 service,socket,target 等 |
get-default | 取得目前的 target |
set-default | 设定后面接的 target 成为默认的操作模式 |
isolate | 切换到后面接的模式 |
3.2.3 unit file 结构
文件通常由三部分组成:
- Unit:定义与 Unit 类型无关的通用选项;用于提供 unit 的描述信息,unit 行为及依赖关系等。
- Service:与特定类型相关的专用选项;此处为 Service 类型。
- Install:定义由 "systemctl enable" 及 "systemctl disable" 命令在实现服务启用或禁用时用到的一些选项。
3.2.4 常用选项
-
Unit 段的常用选项
- Description:描述信息,意义性描述;
- After:定义 unit 的启动次序;表示当前 unit 应晚于哪些 unit 启动;其功能与 Before 相反;
- Requies:依赖到其它的 units;强依赖,被依赖的 units 无法激活时,当前的 unit 即无法激活;
- Wants:依赖到其它的 units;弱依赖;
- Confilcts:定义 units 的冲突关系;
-
Service 段的常用选项
- Type:用于定义影响 ExecStart 及相关参数的功能的 unit 进程类型;类型有:simple、forking、oneshot、dbus、notify、idle。
- EnvironmentFile:环境配置文件;
- ExecStart:指明启动 unit 要运行的命令或脚本;ExecStart, ExecStartPost
- ExecStop:指明停止 unit 要运行的命令或脚本;
- Restart:重启相关配置
-
Install 段的常用配置
- Alias:别名
- RequiredBy:被哪些 unit 所依赖;
- WantBy:被哪些 unit 所依赖;
3.3 systemctl 使用示例
3.3.1 查看开机启动列表
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态, grep 可以进行过滤)
systemctl list-unit-files
systemctl list-unit-files | grep firewalld
3.3.2 设置开机启动
# 设置开机启动并现在启动
systemctl enable --now firewalld
# 查看服务启动状态
systemctl status firewalld
3.3.3 取消开机启动
# 取消开机启动并现在就停止服务
systemctl disable --now firewalld
# 查看服务状态是否停止
systemctl status firewalld
# 查看启动列表
systemctl list-unit-files |grep firewalld
3.3.4 开启服务
systemctl start firewall
3.3.5 关闭服务
systemctl stop firewall
3.3.6 重启服务
systemctl restart 服务名
3.3.7 重新加载配置
systemctl reload 服务名
3.3.8 输出服务运行的状态
systemctl status 服务名
systemctl status firewalld
3.3.9 检查 service 是否在启动状态
systemctl is-active 服务名
systemctl is-active NetworkManager
3.3.10 检测 unit 单元是否为自动启动
systemctl is-enabled 服务名
systemctl is-enabled firewalld
3.3.11 注销一个服务
systemctl mask firewalld
3.3.12 取消注销服务
systemctl unmask firewalld
3.3.13 显示单元的手册页
systemctl help
3.3.14 重新加载配置文件
systemctl daemon-reload
3.3.15 查看 systemd 资源使用率
systemd-cgtop
3.3.16 杀死服务
systemctl kill xinetd
systemctl is-failed xinetd
四、系统运行级别
4.1 Linux 运行级别 CentOS 6
CentOS 6 有多种运行级别,每个运行级别对应不同的系统状态。
4.2 CentOS 7 的运行级别
CentOS 7 的运行级别简化为:
- multi-user.target:等价于原运行级别 3(多用户有网,无图形界面)
- graphical.target:等价于原运行级别 5(多用户有网,有图形界面)
4.3 查看当前运行级别
systemctl get-default
4.4 修改当前运行级别
systemctl set-default graphical.target
五、关机重启命令
5.1 关机重启命令汇总
命令 | 功能 | 用户权限 | 详细说明 |
---|---|---|---|
halt | 关机 | root 用户 | halt:只关闭系统,电源还在运行;halt -p:关闭系统,关闭电源(先执行 halt,再执行 poweroff) |
poweroff | 关机 | root 用户 | poweroff 会发送一个关闭电源的信号给 acpi |
reboot | 重启 | root 用户 | |
shutdown | -h:关机 -r:重启 -c:取消 shutdown 操作 | root 用户 | shutdown 实际上是调用 init 0, init 0 会 cleanup 一些工作然后调用 halt 或者 poweroff shutdown -r now:一分钟后重启 shutdown -r 05:30:最近的 5:30 重启 shutdown -r +10:十分钟后重启 |
init | init 0:关机 init 6:重启 | root 用户 | init:切换系统的运行级别 |
systemctl | systemctl halt [-i]:关机 systemctl poweroff [-i]:关机 systemctl reboot [-i]:重启 | 普通用户 超级用户 | 普通用户需要加 -i root 用户不需要加 -i |
5.2 shutdown 命令
5.2.1 基本格式
shutdown [选项] [时间] [警告信息]
5.2.2 选项说明
- -h:关机
- -r:重启
- -c:取消 shutdown 执行的关机或者重启命令
- -k:不关机,发出警告
5.2.3 时间说明
- shutdown:一分钟后关机(默认)
- shutdown now:立刻关机
- shutdown 10:10 分钟后关机
- shutdown 05:00:5 点关机
5.2.4 示例
shutdown -r now:系统立马重启(等同于 reboot)
shutdown -r 05:30:最近的 5:30 重启
shutdown -r 10:十分钟后重启
shutdown -h now:立马关机(等同于 poweroff)
shutdown -h 05:30:最近的 5:30 关机
shutdown -h +10:十分钟后关机
shutdown -c:取消上面的关机重启操作
shutdown -k +10 “I will shutdown in 10 minutes”:10 分钟后并不会真的关机,但是会把警告信息发给所有的用户。
5.3 sync 命令
sync 是 linux 同步数据命令,将数据由内存同步到硬盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。
5.3.1 使用示例
sync
5.3.2 使用场景
- 在关机或者开机之前最好多执行这个几次,以确保数据写入硬盘。
- 挂载时,需要很长时间的操作动作(比如,cp 大文件,检测文件),在这个动作之后接 sync。
- 卸载 U 盘或其他存储设备,需要很长时间,使用 sync。