systemd 是一个专用于 Linux 操作系统的系统与服务管理器。当作为启动进程(PID=1)运行时,它将作为初始化系统运行,也就是启动并维护各种用户空间的服务。

为了与传统的 SysV 兼容,如果将 systemd 以 init 名称启动,并且"PID≠1",那么它将执行 telinit 命令并将所有命令行参数原封不动的传递过去。这样对于普通的登陆会话来说,无论是调用 init 还是调用 telinit 都是等价的。

当作为系统实例运行时,systemd 将会按照 system.conf 配置文件以及 system.conf.d 配置目录中的指令工作;当作为用户实例运行时,systemd 将会按照 user.conf 配置文件以及 user.conf.d 配置目录中的指令工作。

选项

能够识别的命令行选项如下:

--test

检测并输出启动序列,然后退出。仅用于调试目的。

--dump-configuration-items

输出一个单元(unit)列表。此列表简明且完整的列出了所有单元文件中定义的"unit"。

--unit=

设置启动时默认启动的单元(unit)。默认值是 default.target

--system, --user

--system 表示强制作为系统实例运行(即使"PID≠1"), --user 表示强制作为用户实例运行(即使"PID=1")。通常不应该使用此选项。此选项仅用于调试目的,而且 --system 仅在与 --test 一起使用时才有实际意义。

--dump-core

在崩溃时进行内核转储。当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.dump_core= 开启。

--crash-vt=VT

在崩溃时切换到指定的虚拟控制台(VT)。当作为用户实例运行时,此选项没有实际意义。可以设为一个 1–63 之间的整数或布尔值。若设为整数则切换到指定编号的虚拟控制台;若设为 yes 则表示使用内核消息所使用的虚拟控制台;若设为 no 则表示不切换到任何虚 拟控制台。此选项还可以通过内核引导选项 systemd.crash_vt= 设置。

--crash-shell

在崩溃时启动一个 shell 。 当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.crash_shell= 开启。

--crash-reboot

在崩溃时自动重启系统。当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.crash_reboot= 开启。

--confirm-spawn

在派生新进程时进行确认提示。 当作为用户实例运行时,此选项没有实际意义。

--show-status=

在系统启动过程中显示简明的服务状态信息。当作为用户实例运行时,此选项没有实际意义。其参数必须是一个表示真假的布尔值,如果未指定则相当于设为 yes

--log-target=

设置日志的目标,其参数必须是 console, journal, kmsg, journal-or-kmsg, null 之一( 小写)。

--log-level=

设置日志的等级,其参数必须是一个数字或者符合 syslog(3) 习惯的 emerg,alert,crit, err, warning, notice, info, debug 之一(小写)。

--log-color=

高亮重要的日志信息,其参数必须是一个表示真假的布尔值,若未指定则相当于设为 yes

--log-location=

在日志中包含代码的位置, 其参数必须是一个表示真假的布尔值,若未指定则相当于设为 yes。仅用于调试目的。

--default-standard-output=, --default-standard-error=

为所有的 service 与 socket 设置默认的标准输出与标准错误, 相当于设置  StandardOutput= 与 StandardError= 指令的值(参见 systemd.exec(5) 手册)。其参数必须是 inherit, null, tty, journal, journal+console, syslog, syslog+console, kmsg,  kmsg+console 之一(小写)。 --default-standard-output= 的默认值是 journal ;而 -- default-standard-error= 的默认值是 inherit

--machine-id=

覆盖文件系统上的 machine-id 设置,常用于网络启动或容器。禁止设为全零的值。

-h, --help

显示简短的帮助信息并退出。

--version

显示简短的版本信息并退出。

信号

SIGTERM

systemd 系统实例将会保存其当前状态, 然后重新执行它自身,再恢复到先前保存的状态。基本上相当于执行 systemctl daemon-reexec 命令。

systemd 用户实例将会启动 exit.target 单元。基本上相当于执行 systemctl --user start exit.target 命令。

SIGINT

systemd 系统实例将会启动 ctrl-alt-del.target 单元。基本上相当于执行 systemctl  start ctl-alt-del.target 命令。在控制台上按 Ctrl-Alt-Del 组合键即可触发这个信号。但是,如果在2秒内连续收到超过7次这个信号,那么将会不顾一切的立即强制重启。因此,如果系统在重启过程中僵死, 那么可以通过快速连按7次 Ctrl-Alt-Del 组合键来强制立即重启。

systemd 用户实例处理此信号的方式与 SIGTERM 相同。

SIGWINCH

systemd 系统实例将会启动 kbrequest.target 单元。 基本上相当于执行 systemctl start  kbrequest.target 命令。

systemd 用户实例将会完全忽略此信号。

SIGPWR

systemd 将会启动 sigpwr.target 单元。基本上相当于执行 systemctl start sigpwr.target 命令。

SIGUSR1

systemd 将会尝试重新连接到 D-Bus 总线。

SIGUSR2

systemd 将会以人类易读的格式将其完整的状态记录到日志中。日期的格式与 systemd- analyze dump 的输出格式相同。

SIGHUP

重新加载守护进程的配置文件。基本上相当于执行 systemctl daemon-reload 命令。

SIGRTMIN+0

进入默认模式,启动 default.target 单元。基本上相当于执行 systemctl start  default.target 命令。

SIGRTMIN+1

进入救援模式,启动 rescue.target 单元。基本上相当于执行 systemctl isolate  rescue.target 命令。

SIGRTMIN+2

进入紧急维修模式,启动 emergency.target 单元。基本上相当于执行 systemctl isolate  emergency.target 命令。

SIGRTMIN+3

关闭系统,启动 halt.target 单元。基本上相当于执行 systemctl start halt.target 命令。

SIGRTMIN+4

关闭系统并切断电源,启动 poweroff.target 单元。基本上相当于执行 systemctl start  poweroff.target 命令。

SIGRTMIN+5

重新启动,启动 reboot.target 单元。 基本上相当于执行 systemctl start reboot.target 命令。

SIGRTMIN+6

通过内核的 kexec 接口重新启动,启动 kexec.target 单元。基本上相当于执行 systemctl start kexec.target 命令。

SIGRTMIN+13

立即关闭机器

SIGRTMIN+14

立即关闭机器并切断电源

SIGRTMIN+15

立即重新启动

SIGRTMIN+16

立即通过内核的 kexec 接口重新启动

SIGRTMIN+20

在控制台上显示状态消息。相当于使用 systemd.show_status=1 内核引导选项。

SIGRTMIN+21

禁止在控制台上显示状态消息。相当于使用 systemd.show_status=0 内核引导选项。

SIGRTMIN+22, SIGRTMIN+23

将日志等级设为 "debug"(22) 或 "info"(23)。相当于使用 systemd.log_level=debug 或  systemd.log_level=info 内核引导选项。

SIGRTMIN+24

立即退出 systemd 用户实例(也就是仅对 --user 实例有效)。

SIGRTMIN+26, SIGRTMIN+27, SIGRTMIN+28

将日志等级设为 "journal-or-kmsg"(26) 或 "console"(27) 或 "kmsg"(28)。 相当于使用  systemd.log_target=journal-or-kmsg 或 systemd.log_target=console 或  systemd.log_target=kmsg 内核引导选项。