当前位置: 首页 > Linux

linuxinit、service、systemctl的区别

时间:2023-04-07 01:52:53 Linux

接触过linux服务后,我知道的管理服务的方式有3种,分别是init、service、systemctl。至于三者的区别未知,所以整理这篇笔记的目的就是了解三者的区别。init历史上,Linux的启动一直使用init进程。在类Unix计算机操作系统中,Init(initialization的简称)是计算机系统启动时最先启动的进程。Init是一个守护进程,它将持续运行直到系统关闭。它是所有其他进程的直接或间接父进程。因为init的参数都在/etc/init.d目录下,所以用init来启动一个服务,应该这样做:$sudo/etc/init.d/nginxstartservice从manpage可以知道service是SystemVinit的运行脚本命令。那么什么是SystemVinit?即/etc/init.d目录下的参数。所以分析出service是在/etc/init.d目录下执行相关程序,service配置文件存放目录为/etc/init.d。使用service启动一个服务$servicenginxstart可以理解为service是init.d的一种方式。所以这两种启动方式(或停止,重启)没有区别。$sudo/etc/init.d/nginxstart//等同于$servicenginxstart但是这两种方法都有以下缺点:启动时间长。init进程是串行启动的,直到上一个进程启动后才会启动下一个进程。启动脚本很复杂。init进程只执行启动脚本,不关心其他事情。脚本需要自己处理各种情况,这往往使得脚本很长。systemdSystemd就是为解决这些问题而诞生的。它包括系统和服务管理器,为系统启动和管理提供完整的解决方案。Systemd是Linux系统中最新的初始化系统(init)。它的主要设计目的是为了克服SystemVinit的先天不足,提高系统的启动速度。按照Linux约定,字母d是daemon的缩写。Systemd这个名字的意思是它守护着整个系统。使用Systemd,您不再需要使用init。Systemd取代initd(Initd的PID为0)成为系统的第一个进程(Systemd的PID等于1),其他进程都是它的子进程。Systemd的优点是功能强大,使用方便,缺点是系统庞大,非常复杂。查看Systemd的版本信息$systemctl--version系统管理Systemd不是一个命令,而是一组命令,涉及系统管理的方方面面。systemctlsystemctl是Systemd的主要命令,用于管理系统。//重启系统$sudosystemctlreboot//启动进入救援状态(单用户状态)$sudosystemctlrescue//管理服务$sudosystemctlstartnginxhostnamectlhostnamectl命令用于查看当前主机的信息。//显示当前主机信息$hostnamectl//设置主机名$sudohostnamectlset-hostnameBoodeUbuntulocalectllocalectl命令用于查看本地化设置。//查看本地化设置$localectl//设置本地化参数。$sudolocalectlset-localeLANG=en_GB.utf8$sudolocalectlset-keymapen_GBtimedatectltimedatectl命令用于检查当前时区设置。//查看当前时区设置$timedatectl//显示所有可用时区$timedatectllist-timezones//设置当前时区$sudotimedatectlset-timezoneAmerica/New_York$sudotimedatectlset-timeYYYY-MM-DD$sudotimedatectlset-timeHH:MM:SS总结init是最初的进程管理方式service是init的另一种实现systemd是替代initd的解决方案其中systemctl是systemd管理系统和服务的主要命令。参考LinkLinuxInit-维基百科Systemd入门教程-阮一峰的网络日志init、service、systemctl的区别如何启动Linux守护进程