CentOS 7 中 Systemd详解(4)

3、service常用的选项
Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
        simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
 forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止。
      oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
      dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
      notify:在启动完成后会发送一个通知消息。还需要配合NotifyAccess 来让 Systemd 接收消息
      idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通
常是开机到最后才执行即可的服务。
    EnvironmentFile:环境配置文件
    ExecStart:指明启动unit要运行命令或脚本的绝对路径
    ExecStartPre: ExecStart前运行
    ExecStartPost: ExecStart后运行
    ExecRsload: 重启当前服务时执行的命令
    ExecStopPost:停止当前服务之后执行的命令
    ExecStartSec:自动重启当前服务间隔的秒数
    ExecStop:指明停止unit要运行的命令或脚本
    Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务。
    TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数。
    Environment:指定环境变量。
4、install 常用选项
Install段的常用选项:
Alias:别名,可使用systemctl command Alias.service
RequiredBy:被哪些units所依赖,强依赖
WantedBy:被哪些units所依赖,弱依赖
Also:安装本服务的时候还要安装别的相关服务

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启。
# systemctl daemon-reload
# systemctl daemon-reload
#systemctl restart httpd.service
更加详细的unit配置文件格式 请参考官方文档
https://www.freedesktop.org/software/systemd/man/systemd.unit.html

六、Target
启动计算机的时候,需要启动大量的 Unit。如果每一次启动,都要一一写明本次启动需要哪些 Unit,显然非常不方便。Systemd 的解决方案就是 Target。
简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。
传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。不同的是,RunLevel 是互斥的,不可能多个 RunLevel 同时启动,但是多个 Target 可以同时启动。
1、Target命令
 查看当前系统的所有 Target
# systemctl list-unit-files --type=target
 查看一个 Target 包含的所有 Unit
# systemctl list-dependencies multi-user.target
 查看启动时的默认 Target
# systemctl get-default
 设置启动时的默认 Target
#  systemctl set-default multi-user.target


切换 Target 时,默认不关闭前一个 Target 启动的进程, systemctl isolate 命令改变这种行为,
关闭前一个 Target 里面所有不属于后一个 Target 的进程 systemctl isolate multi-user.target


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


Traditional runlevel      New target name    Symbolically linked to...
Runlevel 0          |    runlevel0.target -> poweroff.target
Runlevel 1          |    runlevel1.target -> rescue.target
Runlevel 2          |    runlevel2.target -> multi-user.target
Runlevel 3          |    runlevel3.target -> multi-user.target
Runlevel 4          |    runlevel4.target -> multi-user.target
Runlevel 5          |    runlevel5.target -> graphical.target
Runlevel 6          |    runlevel6.target -> reboot.target
3、它与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目录里面的修改可以覆盖原始设置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3b8af29d0536e48721d1836e32246c0a.html