首页 > 服务器学习 > Linux > systemd中Target管理
2018
05-28

systemd中Target管理

启动计算机的时候,需要启动大量的 Unit。如果每一次启动,都要一一写明本次启动需要哪些 Unit,显然非常不方便。Systemd 的解决方案就是 Target。简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。不同的是,RunLevel 是互斥的,不可能多个 RunLevel 同时启动,但是多个 Target 可以同时启动。

查看当前系统的所有Target:systemctl list-unit-files --type=target

查看一个Target包含的所有 Unit:systemctl list-dependencies multi-user.target

查看启动时的默认Target:systemctl get-default

设置启动时的默认 Target:sudo systemctl set-default multi-user.target

切换Target并关闭前一个Target里面所有不属于后一个Target的进程:systemctl isolate multi-user.target

Target 与 传统 RunLevel 的对应关系如下。

Runlevel 0== poweroff.target

Runlevel 1== rescue.target

Runlevel 2== multi-user.target

Runlevel 3== multi-user.target

Runlevel 4== multi-user.target

Runlevel 5== graphical.target

Runlevel 6== reboot.target

它与init进程的主要差别如下。

(1)默认的 RunLevel(在/etc/inittab文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target,通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)。

(2)启动脚本的位置,以前是/etc/init.d目录,符号链接到不同的 RunLevel 目录 (比如/etc/rc3.d、/etc/rc5.d等),现在则存放在/lib/systemd/system和/etc/systemd/system目录。

(3)配置文件的位置,以前init进程的配置文件是/etc/inittab,各种服务的配置文件存放在/etc/sysconfig目录。现在的配置文件主要存放在/lib/systemd目录,在/etc/systemd目录里面的修改可以覆盖原始设置。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。