Linux操作系统的启动过程,首先从BIOS开始启动,然后从磁盘加载MBR, 接下来进入bootloader,载入内核Kernel, 完成内核的初始化。内核初始化的最后一步,需要产生第一个进程,负责管理其他的所有进程。
Linux的初始化进程主要包括以下两种:Sysvinit, Systemd。
init和Systemd的区别
1、init:
- init启动时间长,属于串行启动,前一个进程启动完毕,才会启动下一个进程。
- init启动脚本复杂,Init进程只是执行启动脚本,不负责其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长。
- 由Linux内核加载运行,位于 /sbin/init ,是系统中的第一个进程,PID永远为1。
2、systemd:
- 按需启动服务,减少系统资源消耗。
- 尽可能并行启动进程,减少系统启动等待时间
- 由Linx内核加载运行,位于 /usr/lib/systemd/systemd ,是系统中第一个进程,PID永远为1
Init 进程的配置文件
参数 | 说明 |
/etc/init.d/ | 服务启动脚本配置文件存放目录 |
/etc/inittab | 默认运行级别配置文件 |
/etc/init/rcS.conf | 系统初始化配置文件 |
/etc/init/rc.conf | 各运行级别初始化的配置文件 |
/etc/init/rcS-sulogin.conf | 单用户模式启动 /sbin/sushell 环境的配置文件 |
/etc/init/control-alt-delete.conf | 终端下的 ctrl+alt+del 热键操作的配置文件 |
/etc/sysconfig/init | tty终端的配置文件 |
/etc/init/start-ttys.conf | 配置tty终端的开启数量、设备文件 |
/etc/init/tty.conf 或 /etc/init/serial.conf | 控制tty终端的开启 |
Systemd进程的配置文件
参数 | 说明 |
/etc/systemd/system/default.target | 取代/etc/inittab文件配置,通常符号链接到 /lib/systemd/system/graphical.target |
/run/systemd/system/ | 系统执行过程中所产生的服务脚本所在目录 |
/etc/systemd/system/ | 里面存放着不同级别的开启自启服务 |
/usr/lib/systemd/system/ 和 /lib/systemd/system/ 和,两个文件完全一样,因为lib是/usr/lib的软链接 | 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/ |
运行级别和说明
运行级别 | 说明 | Rehl 6/7 命令 | Rhel7 命令 |
0 | 关机状态,使用该级别将会关机 | init 0 | poweroff |
1 | 系统救援模式,多用于系统维护 | init 1 | systemctl isolate rescue.target |
2 | 字符界面的多用户模式(不可访问网络) | init 2 | systemctl isolate mutil-user.target |
3 | 字符界面的完整多用户模式,大多数服务器主机运行此级别 | init 3 | systemctl isolate mutil-user.target |
4 | 未分配使用 | init 4 | systemctl isolate mutil-user.target |
5 | 图形界面的多用户模式,提供了图形桌面操作环境 | init 5 | systemctl isolate graphical.target |
6 | 重新启动主机 | init 6 | reboot |
方式二:使用systemd管理服务
因为systemd的使用最为广泛,因为我们先从它来开始谈起。
1. 查看所有服务
要管理某项服务,我们首先需要知道系统上有哪些服务正在运行。我们可以通过如下的命令,来查看系统上的所有服务:
systemctl list-unit-files --type service -all
执行此命令,将输出当前系统所有服务的状态。服务状态包括启动,关闭,屏蔽(在未设置屏蔽之前无效),静态等。
将systemd命令与grep命令结合使用,可以仅显示正在运行的服务
sudo systemctl | grep running
现在我们能够看到所有正在运行的服务,现在我们就可以根据需要,对这些服务进行管理了。
注意: 使用时,将<service-name> 替换为想要管理的服务。
2. 启动服务
要在Linux中启动服务,只需要使用如下命令:
systemctl start <service-name>
3. 关闭服务
要停止systemd服务,可以使用systemctl stop命令:
systemctl stop <service-name>
4. 重启服务
在Linux系统中,使用systemd重新启动服务,可以使用:
systemctl restart <service-name>
5.检查服务状态
可以通过如下命令,来检查某项服务状态:
systemctl status <service-name>
执行后,输出如下内容:
方式一: 使用init管理Linux服务
1. 列出所有服务
使用下面的命令,可以列出系统上的所有服务:
service --status-all
服务前面的[ – ] 是关闭状态,前面的 [ + ] 是启动状态。
2. 启动服务
要启动一项服务,可以通过如下命令:
service <service-name> start
3. 关闭服务
关闭某项服务,可以执行下面的命令:
service <service-name> stop
4. 重启服务
如果想重启服务,可以执行下面的命令:
service <service-name> restart
5. 检查服务状态
此外,为了检查是否达到想要的结果,我们可以执行下面的命令来检查服务状态:
service <service-name> status
执行后会返回类似下面的内容。
通过上面的内容,我们能够看到服务是否处于激活状态(running)。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-linux-manage-service/