总结Linux系统启动与服务管理(整理分享)
本篇文章给大家带来了关于linux中系统启动与服务管理的相关知识,服务器在正常的运行过程中,一般很少重启,但是如果发生了未知故障或者遇到了人为误操作的情况,可能就会出现启动异常的状况,希望对大家有帮助。
1. 前言
服务器在正常的运行过程中,一般很少重启,但是如果发生了未知故障或者遇到了人为误操作的情况,可能就会出现启动异常的状况。虽然 Linux 系统启动流程是比较底层的知识了,但是为了加深对 Linux 系统的理解,总结了这篇文章。
2. Linux 系统启动过程
2.1 开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU、内存、显卡、硬盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
2.2 MBR 引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR (主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如GRUB) 。
2.3 GRUB 菜单
对于Linux操作系统来说,GRUB (统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给内核。需要注意的是,Centos7 采用的是 GRUB2 启动引导器。
2.4 加载 Linux 内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过程。
在CentoS 系统中,默认的内核文件位于"/boot/vmlinuz-3.10.0-514.el7.x86_64"。
2.5 init 进程初始化
为了完成进一步的系统引导过程,Linux 内核首先将系统中的 “/sbin/init” 程序加载到内存中运行,init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
2.6 系统启动过程总结
- 检测出第一个能够引导系统的设备比如硬盘或光驱
- 运行放在 MBR 扇区里的启动 GRUB 引导程序
- GRUB 引导程序通过读取 GRUB 配置文件 /boot/grub2/grub.cfg 来获取内核和镜像文件系统的设置以及路径位置
- 把内核和镜像文件系统加载到内存中
- 加载硬件驱动程序,内核把 init 进程加载到内存中运行
3. init 进程与 systemd
3.1 init 进程
- 由 Linux 内核加载运行 /sbin/init 程序
- init 进程是系统中第一个进程
- init 进程的 PID 号永远为 1
[root@c7-1 ~]#ll /sbin/initlrwxrwxrwx. 1 root root 22 8月 13 21:44 /sbin/init -> ../lib/systemd/systemd
3.2 Centos5/6/7 init 进程对比
3.3 systemd
- systemd 是 Linux 操作系统的一种 init 软件
- CentOS7 中采用全新的 systemd 启动方式,取代传统的 SysVinit
- CentOS7 中运行的第一个 init 进程是 /lib/systemd/systemd
[root@c7-1 ~]#ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 8月15 ? 00:00:31 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 8月15 ? 00:00:00 [kthreadd] root 4 2 0 8月15 ? 00:00:00 [kworker/0:0H] root 6 2 0 8月15 ? 00:00:00 [ksoftirqd/0] root 7 2 0 8月15 ? 00:00:00 [migration/0] ......
3.4 systemd 单元类型
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似 cron 的调度任务) |
Snapshot | .snapshot | 用于保存一个 systemd 的状态 |
Scope | .scope | 使用 systemd 的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于 Cgroup 的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组 systemd 的单元 |
3.5 运行级别对应的 systemd 目标
运行级别 | systemd 的 target | 说明 |
---|---|---|
0 | target | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
3.6 systemd 管理命令 systemctl
格式:
systemctl COMMAND name.service #.service 也可以省略
Sysvinit 和 Systemd 命令对比
Sysvinit命令 | Systemd命令 | 含义 |
---|---|---|
service name start | systemctl start name | 启动服务 |
service name stop | systemctl stop name | 关闭服务 |
service name restart | systemctl restart name | 重启服务不管当前是启动还是关闭状态 |
service name reload | systemctl reload name | 重新载入服务配置信息而不中断服务 |
service name condrestart | systemctl condrestart name | 运行状态的服务可以重启,不在运行状态无法重启 |
service name status | systemctl status name | 查看服务的运行状态 |
chkconfig name on | systemctl enable name | 设置服务为开机自启动 |
chkconfig name off | systemctl disable name | 设置服务为开机关闭 |
chkconfig name | systemctl is-enabled name | 检查服务是否开机自启 |
chkconfig name --add | systemctl daemon-reload | 创建一个新服务文件,或者变更配置的时候使用 |
示例:
#启动 httpd 服务 systemctl start httpd #停止 httpd 服务 systemctl stop httpd #重启 httpd 服务 systemctl restart httpd #查看 httpd 服务状态 systemctl status httpd #禁止自动和手动启动服务(可以关闭运行的服务) systemctl mask name.service #取消禁止 systemctl unmask name.service #查看某服务当前是否正在运行 systemctl is-active name.service #查看所有服务 systemctl list-unit-files --type=service #查看所有已经激活的服务 systemctl list-unit-files --type=service | grep enabled #列出启动失败的服务 systemctl --failed --type=service 或 systemctl list-units --state failed 或 systemctl list-unit-files --state=failed #开启 httpd 服务并设置开机自启 systemctl enable --now httpd.service #关闭 httpd 服务并关闭开机自启 systemctl disable --now httpd.service #查看服务的依赖关系 systemctl list-dependencies name.service #杀掉进程 systemctl kill unitname
4.总结
作为一名运维工程,对 Linux 系统服务的管理是基本技能。一个系统在安装完成后免不了要对系统进行优化,关闭不必要的服务,节省系统资源,保护服务器不受网络攻击,这也是运维工作的职责所在,熟练掌握 Linux 系统的底层原理和基本操作,在面对问题的时候才不会茫然不知所措!
相关推荐:《Linux视频教程》
以上是总结Linux系统启动与服务管理(整理分享)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

VS Code扩展安装失败的原因可能包括:网络不稳定、权限不足、系统兼容性问题、VS Code版本过旧、杀毒软件或防火墙干扰。通过检查网络连接、权限、日志文件、更新VS Code、禁用安全软件以及重启VS Code或计算机,可以逐步排查和解决问题。

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

VS Code 全称 Visual Studio Code,是一个由微软开发的免费开源跨平台代码编辑器和开发环境。它支持广泛的编程语言,提供语法高亮、代码自动补全、代码片段和智能提示等功能以提高开发效率。通过丰富的扩展生态系统,用户可以针对特定需求和语言添加扩展程序,例如调试器、代码格式化工具和 Git 集成。VS Code 还包含直观的调试器,有助于快速查找和解决代码中的 bug。

VS Code 可以在 Mac 上使用。它具有强大的扩展功能、Git 集成、终端和调试器,同时还提供了丰富的设置选项。但是,对于特别大型项目或专业性较强的开发,VS Code 可能会有性能或功能限制。

Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。
