【linux 服务】System V、Systemd、Systemctl的概念以及理解

介绍

Systemctl(centos7): 一个systemd工具,主要负责控制systemd系统和服务管理器。

Systemd(centos6):一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。

System V(centos5):SysV 初始化脚本(/etc/init.d),用来控制系统启动和关闭,System V Interface Definition (SVID) 是一个System V 如何工作的标准定义。

system V

原理

  • linux系统类似于window系统一样可以自启动和禁止一些服务程序,在system V管理体系中,这些服务脚本程序存在于/etc/init.d文件夹下,在etc文件夹下,存在rc0,rc1 …rc6等目录。顾名思义,这些目录下的文件即为不同的运行级别需要启动或者禁止的服务,实际上,这些目录下的文件只是一些符号链接文件,指向init.d下相应的服务。
  • linux系统init进程会根据inittab配置文件确定当前运行级别并执行相应级别rc目录的服务脚本程序,rc目录下存在两种文件,一种以S打头代表启动服务,一种以K打头禁止服务,字母后两位数字代表执行顺序,按从小到大顺序执行。
  • 我们可用runlevel命令查看当前系统运行级别,init X(0~6)切换其它运行级别,若需要设置默认启动的运行级别,需要修改inittab文件id:2:initdefault:这一行,改后reboot即可默认级别生效。

工具使用

system V主要用chkconfig,sevice update-rc.d命令管理服务,在使用这些命令操作服务前,需要将相应服务脚本放入/etc/init.d目录中,在centos7中基本已经不用。

chkconfig(是check config的缩写)基本命令如下:

chkconfig –add servicename  			# 添加服务 
chkconfig –level 2345 servicename on 	# 使服务自动启动 
chkconfig –level 2345 servicename off 	# 使服务自动禁止
chkconfig –del servicename   			# 删除服务
chkconfig servicename status			# 检查服务状态
chkconfig –list							# 显示所有已启动的服务

service基本命令如下:

service servicename start				#  启动某服务 
service servicename stop 				# 停止某服务
service servicename restart  			# 重启某服务

update-rc.d基本命令如下:

update-rc.d -f servicename remove # 删除服务
update-rc.d service start  2 3 4 5  stop  0 1 6   # 使服务在指定级别自动启动或禁止

chkconfig --list

systemd

原理

  • systemd是Linux下的一种init软件,Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。

  • systemd的管理体系里面,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代。

  • tartget的命名类似于multi-user.target等这种形式。

    • 原来的运行级别3(runlevel3)就对应新的多用户目标(multi-user.target
    • run level 5就相当于graphical.target
  • 由于不再使用runlevel概念,所以/etc/inittab也不再被系统使用 。(补充: 无怪乎在新版本ubuntu上找不到inittab文件了)

  • 而在systemd的管理体系里面,默认的target(相当于以前的默认运行级别)是通过软链来实现。

    • 例如:ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
  • /lib/systemd/system/ 下面定义runlevelX.target文件目的主要是为了能够兼容以前的运行级别level的管理方法。

  • 事实上/lib/systemd/system/runlevel3.target,同样是被软连接到multi-user.target

特点

  • 系统引导时实现服务并行启动
  • 按需激活进程 (开机后进入需要启动的程序,会进入半激活状态,第一次访问的时候会直接执行)
  • 系统状态快照
  • 基于依赖关系定义服务控制逻辑

systemctl

  • systemctl就是一个==负责和守护进程==systemd通信的客户端工具。systemd使用systemctl命令管理。

  • 使用systemctl命令需事先将xxx.service脚本放入/etc/systemd/system目录中

systemctl enable xxx.service		# 使服务自启动 
systemctl disable xxx.service	 	# 使服务自动禁止
systemctl status xxx.service 		# 检查服务状态
systemctl start xxx.service			# 启动某服务 
systemctl stop xxx.service			# 停止某服务 
systemctl restart xxx.service 		# 重启某服务 
systemctl list-unit-files 			# 列出所有配置文件

 systemctl list-unit-files

systemctl list-unit-files 主要列出来了 服务单元 和状态

状态释义
disabled禁止开机自启动
enable开机自启动
static不确定是否启动(如果别的自启动项依赖于该服务,则该服务启动,否则不启动
systemctl list-units

systemctl list-units

名称介绍
UNIT服务单元名称
LOADsystemd是否正切解析了单元的配置并将该单元加载到内存中
ACTIVE单元的高级别激活状态。此信息表明单元是否成功启动
SUB单元的低级别激活状态。此信息指示有关该单元的更多详细信息。信息视单元类型、状态以及单元的执行方式而异
DESCRIPTION单元的简短描述

注意:

  1. systemctl list-units命令显示systemd服务尝试解析并加载到内存中的单元;
  2. 它不显示已安装但未启用的服务。
  3. 要查看素有已安装的单元文件的状态,需要使用systemctl list-unit-files命令
上一篇 下一篇