Linux init service systemd 的区别与关系
Posted 小伍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux init service systemd 的区别与关系相关的知识,希望对你有一定的参考价值。
init
在类Unix 的计算机操作系统中,Init(初始化的简称)是在计算机启动的第一个进程。
Init 是一个守护进程,它持续运行,直到系统关闭。它是所有其他进程的直接或间接的父进程。
因为 init 的参数全在/etc/init.d
目录下,所以使用 init 启动一个服务,应该这样做:
$ sudo /etc/init.d/nginx start
service
service是一个运行System V init
的脚本命令。System V init 是/etc/init.d
目录下的参数。
service 是去/etc/init.d
目录下执行相关程序,服务配置文件的存放目录就是/etc/init.d
。
使用 service 启动一个服务,应该这样做:
$ service nginx start
可以理解成 service 就是init.d
的一种实现方式。所以与 init 并没有什么区别。
这两种方式均有如下缺点:
- 启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
- 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
systemd
Systemd 就是为了解决这些问题而诞生的。它包括 System and Service Manager,为系统的启动和管理提供一套完整的解决方案。
Systemd 是Linux 系统中最新的初始化系统(init),它主要的设计目的是克服 System V init
固有的缺点,提高系统的启动速度。
Systemd 这个名字的含义,就是它要守护整个系统。使用了 Systemd,就不需要再用 init 了。
Systemd 取代了initd(initd 的PID 是0) ,成为系统的第一个进程(Systemd 的PID 是1),其他进程都是它的子进程。
Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。
查看Systemd 的版本信息:
$ systemctl --version
使用 systemd 进行系统管理
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
systemctl是 Systemd 的主命令,用于管理系统。
hostnamectl用于管理当前主机设置。
localectl用于管理本地化设置。
timedatectl用于管理当前时区设置。
以上是关于Linux init service systemd 的区别与关系的主要内容,如果未能解决你的问题,请参考以下文章
Linux init service systemd 的区别与关系
WSL 错误 System has not been booted with systemd as init system (PID 1). Can‘t operate