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 内核引导选项。