systemctl
systemctl(system control)-控制systemd系统和服务管理器。
描述:
向system 管理器查询或发送控制命令的工具。
使用说明:
options:
-h, --help 显示帮助信息
--version 显示版本信息
--system 连接到系统管理器
-H, --host=[USER@]HOST 在远程机器上操作,USER是可选填内容,即可以指定远程主机用户。HOST后面还可以添加SSH监听端口,例如"HOST:PORT/CONTAINER"格式,表示直接连接到远程主机的指定容器。
M, --machine=CONTAINER 在本地容器内操作,必须指定容器名称。
-t, --type= 列出指定类型的单元,参数必须是一个 逗号分隔的单元类型列表 (例如"service,socket")。否则将列出所有类型的单元。
--state= 列出处于指定状态的单元,参数必须是一个逗号分隔的单元状态列表(例如,使用-- state=failed 表示只列出处于失败(failed)状态的单元。)
-p, --property= 显示属性时,仅显示参数给定的属性,参数必须是一个逗号分隔的属性名称列表(例如"MainPID,LogLevel")。
--all 在列出单元时,表示列出所有已加载的单元(不管它处于何种状态)。
-l, --full 在输出中, 显示完整的单元名称、进程树项目、日志输出、单元描述, 也就是不省略或截断它们。
-r, --recursive 在列出单元时, 同时也以 "容器名:单元名" 格式列出本地容器中的单元。
--reverse 在使用 list-dependencies 命令时, 仅显示单元之间的反向依赖关系。 也就是仅显 示 WantedBy=, RequiredBy=, PartOf=, BoundBy= 系列(而不是 Wants= 系列)的依赖关系。
--job-mode 在向任务队列中添加新任务(job)时,如何处理队列中已有该任务的行为。 可设为 "fail", "replace", "replace-irreversibly", "isolate", "ignore-dependencies", "ignore-requirements", "flush"。
--show-types 在列出套接字(socket)时,同时显示套接字的类型。
-i, --ignore-inhibitors 当关闭或休眠系统时,忽略 inhibitor 锁。
--kill-who= 指定向哪个进程发送信号。
-s, --signal= 指定向目标进程发送哪个信号。
--now 在设置单元可用或不可用状态的同时开启或停止该单元。
-q, --quiet 安静模式, 也就是禁止输出任何信息到标准输出。
--no-block 不用等待操作结束。
--no-wall 在执行 halt, poweroff, reboot 动作前,不发送警告消息。
--no-reload 与 enable, disable, edit 命令连用, 表示在完成操作之后不重新加载 systemd 守护进程的配置(默认会自动重新加载), 相当于不自动执行 daemon-reload 命令。
--no-legend 不输出列标题, 也就是不在输出列表的头部和尾部显示字段的名称。
--no-pager 不将程序的输出内容管道(pipe)给分页程序。
--no-ask-password 不询问密码。
--global 表示在全局用户单元目录(通常是 /etc/systemd/user/)上操作, 从而全局的操作一个用户单元, 这会影响到所有未来登入的用户。
--runtime 仅作临时变更, 从而确保这些变更会在重启后丢失。 这意味着所做的变更将会保存在 /run 目录下(立即生效但重启后该目录的内容将全部丢失), 而不是保存在 /etc 目录下。、
-f, --force 当与 enable 命令连用时, 表示覆盖所有现存的同名符号链接。当执行关机操作时,立即执行指令。
--preset-mode= 与 preset 或 preset-all 命令连用, 可设为下列值之一: "full"(默认值) 表示完全按照预设规则启用与停用各单元。 "enable-only" 表示仅按照预设规则启用各单元。 "disable-only" 表示仅按照预设规则停用各单元。
--root= 设置指定单元文件时的根目录。 使用此选项之后,systemctl 将会直接操作文件系统, 而不是通过与 systemd 守护进程通信的方式进行操作。
-n, --lines= 控制日志的显示行数,参数必须是整数。
-o, --output= 控制日志的显示格式。
--plain 控制输出从默认的树形变为列表型。
command:
1. 单元命令
list-units [PATTERN…] 列出 systemd 当前已加载到内存中的单元。 如果给出了模式(PATTERN)参数,那么表示该命令仅作用于单元名称与至少一个模式相匹配的单元。 还可以通过 --type= 与 --state= 选项 过滤要列出的单元。
list-sockets [PATTERN…] 列出当前已加载到内存中的套接字(socket)单元,并按照监听地址排序。
list-timers [PATTERN…] 列出当前已加载到内存中的定时器(timer)单元,并按照下次执行的时间点排序。
start NAME 启动(activate)指定的已加载单元 (无法启动未加载的单元)。
stop NAME 停止(deactivate) 指定的单元
reload NAME 要求指定的单元重新加载它们的配置。 注意, 这里所说的"配置"是服务进程专属的配置(例如 httpd.conf 之类), 而不是 systemd 的"单元文件"。 如果你想重新加载 systemd 的"单元文件", 那么应该使用 daemon-reload 命令。 以 Apache 为例, 该命令会导致重新加载 httpd.conf 文件, 而不是 apache.service 文件。
restart NAME 重新启动(先停止再启动)指定的单元。 若指定的单元尚未启动,则启动它们。
try-restart NAME 重新启动(先停止再启动)指定的已启动单元。 注意,若指定的单元尚未启动, 则不做任何操作。
reload-or-restart NAME 首先尝试重新加载指定单元的进程专属配置,对于那些加载失败的单元,再继续尝试重新启动(先停止再启动)它们。 若指定的单元尚未启动,则启动它们。
reload-or-try-restart NAME 首先尝试重新加载指定单元的进程专属配置,对于那些加载失败的单元,再继续尝试重新启动(先停止再启动)它们。 注意,若指定的单元尚未启动,则不做任何操作。
isolate NAME 启动指定的单元及其依赖的所有单元,同时停止所有其他 IgnoreOnIsolate=no 的单元。
kill NAME 向指定单元的 --kill-who= 进程发送 --signal= 信号。
is-active PATTERN… 检查指定的单元中, 是否有处于活动(active)状态的单元。
is-failed PATTERN… 检查指定的单元中, 是否有处于失败(failed)状态的单元。
status [PATTERN…|PID…] 如果指定了单元, 那么显示指定单元的运行时状态信息,以及这些单元最近的日志数据。 如果指定了PID,那么显示指定PID所属单元的运行时状态信息,以及这些单元最近的日志数据。 如果未指定任何单元或PID,那么显示整个系统的状态信息, 此时若与 --all 连用,则同时显示所有已加载单元(可以用 -t 限定单元类型)的 状态信息。
show [PATTERN…|JOB…] 显示指定单元或任务的所有属性,单元用其名称表示,而任务则用其id表示。 如果没有指定任何单元或任务,那么显示管理器(systemd)自身的属性。 除非使用了 --all 选项,否则默认不显示属性值为空的属性。 可以使用 --property= 选项限定仅显示特定的属性。 此命令的输出仅适合用于程序分析,而不适合被人类阅读(应该使用 status 命令)。
cat PATTERN… 显示指定单元的单元文件内容。
set-property NAME ASSIGNMENT 修改单元的属性值。
help PATTERN…|PID… 显示指定单元或PID进程的手册页(若存在)。
reset-failed [PATTERN…] 重置指定单元的失败(failed)状态。
list-dependencies [UNIT] 显示单元的依赖关系。
2. 单元文件命令
list-unit-files [PATTERN…] 列出所有已安装的单元文件及其启用状态。
enable NAME 启用指定的单元或单元实例(多数时候相当于将这些单元设为"开机时自动启动"或"插入某个硬件时自动启动")。
disable NAME 停用指定的单元或单元实例(多数时候相当于撤销这些单元的"开机时自动启动"以及"插入某个硬件时自动启动")。
reenable NAME 重新启用指定的单元或单元实例。 这相当于先使用 disable 命令之后再使用 enable 命令。
preset NAME 按照预设文件(*.preset)的指示,重置指定单元的启用(enable)/停用(disable)状态。
preset-all 按照预设文件(*.preset)的指示, 重置全部单元的启用(enable)/停用(disable)状态。
is-enabled NAME 检查是否有至少一个指定的单元或单元实例 已经被启用(使用enable 命令)。
mask NAME 屏蔽指定的单元或单元实例。 也就是在单元目录中创建指向 /dev/null 的同名符号连接,从而在根本上确保无法启动这些单元。 这比 disable 命令更彻底,可以通杀一切启动方法(包括手动启动),所以应该谨慎使用该命令。
unmask NAME 解除对指定单元或单元实例的屏蔽,这是 mask 命令的反动作。
link PATH… 将不在标准单元目录中的单元文件(通过软链接)连接到标准单元目录中去。 PATH 参数必须是单元文件的绝对路径。
add-wants TARGET NAME 将指定的单元或单元实例(UNIT) 作为 "Wants=" 或 "Requires=" 依赖, 添加到 TARGET 单元中。
add-requires TARGET NAME 将指定的单元或单元实例(UNIT) 作为 "Requires=" 依赖, 添加到TARGET单元中。
edit NAME… 调用文本编辑器修改 指定的单元或单元实例。
get-default 显示默认的启动目标。 这将显示 default.target 软链接所指向的实际单元文件的名称。
set-default NAME 设置默认的启动目标。 这会将 default.target 软链接指向 TARGET 单元。
3. 机器命令
list-machines [PATTERN…] 列出 主机和所有运行中的本地容器,以及它们的状态。如果给出了模式(PATTERN)参数, 那么仅显示容器名称与至少一个模式匹配的本地容器。
4. 任务命令
list-jobs [PATTERN…] 列出正在运行中的任务。 如果给出了模式(PATTERN)参数, 那么仅显示单元名称与至少一个模式匹配的任务。当与 --after 或 --before 连用时, 输出列表将会包含正在等待哪些任务完成,或哪些任务正在等待此处的任务完成。
cancel JOB… 据给定的任务ID撤消任务。 如果没有给出任务ID, 那么表示撤消所有尚未执行的任务。
5. 快照命令
snapshot NAME 创建一个快照
delete NAME 删除一个或多个快照
6. 环境命令
show-environment 显示所有 systemd 环境变量及其值。
set-environment NAME=VALUE… 设置指定的 systemd 环境变量。
unset-environment NAME 撤消指定的 systemd 环境变量。 如果仅指定了变量名,那么表示无条件的撤消该变量(无论其值是什么)。 如果以 VARIABLE=VALUE 格式同时给出了变量值, 那么表示仅当 VARIABLE 的值恰好等于 VALUE 时, 才撤消 VARIABLE 变量。
import-environment [NAME…] 导入指定的客户端 环境变量。如果未指定任何参数,则表示导入 全部客户端环境变量。
7. systemd管理器生命周期命令
daemon-reload 重新加载 systemd 守护进程的配置。 具体是指,重新运行所有的生成器,重新加载所有单元文件,重建整个依赖关系树。在重新加载过程中,所有由 systemd 代为监听的用户套接字都始终保持可访问状态。不要将此命令与 reload 命令混淆。
daemon-reexec 重新执行 systemd 守护进程。 具体是指,首先序列化 systemd 状态, 接着重新执行 systemd 守护进程并反序列化原有状态。 此命令仅供调试和升级 systemd 使用。
8. 系统命令
is-system-running 检查当前系统是否处于完全运行状态(running)。
initializing 初始化阶段。也就是尚未到达 basic.target/rescue.target/emergency.target 之前的阶段。
starting 正在启动阶段。 也就是任务队列首次达到空闲之前的阶段,或者已经启动到了某个救援 target 中。
running 完成了全部的启动操作,整个系统已经处于完全可用的状态, 并且没有任何单元处于失败(failed)状态。
degraded 完成了全部的启动操作,系统已经可用, 但是某些单元处于失败(failed)状态。
maintenance 启动了 rescue.target/emergency.target 目标。
stopping 系统正处于关闭过程中。
offline 整个系统已经处于完全下线状态。
unknown 由于资源不足或未知原因,无法检测系统的当前状态。
default 进入默认模式。相当于执行 systemctl isolate default.target 命令。此操作默认为阻塞模式,但可以使用 --no-block 选项转变为无阻塞模式。
rescue 进入救援模式。相当于执行 systemctl isolate rescue.target 命令。此操作默认为阻塞模式,但可以使用 --no-block 选项转变为无阻塞模式。
emergency 进入紧急维修模式。相当于执行 systemctl isolate emergency.target 命令。此操作默认为阻塞模式,但可以使用 --no-block 选项转变为无阻塞模式。
halt 关闭系统,但不切断电源。 注意,此命令仅关闭操作系统内核,但不切断硬件电源。若想彻底切断硬件电源,应该使用下面的 systemctl poweroff 命令。
poweroff 关闭系统,同时切断电源。这是一个无阻塞命令,也就是将关闭操作排入任务队列之后, 不等待其完成就立即返回。
reboot [arg] 关闭系统,然后重新启动。差不多相当于执行 systemctl start reboot.target --job-mode=replace-irreversibly --no-block 命令,并同时向所有用户显示一条警告信息。 这是一个无阻塞命令,也就是将重启操作排入任务队列之后, 不等待其完成就立即返回。
kexec 关闭系统,并通过内核的 kexec 接口重新启动。
exit [EXIT_CODE] 退出服务管理器。此命令仅可用于 systemd 用户实例(也就是以 --user 选项启动的实例)或容器,相当于执行 poweroff 命令。 这是一个无阻塞命令,也就是将退出操作排入任务队列之后,不等待其完成就立即返回。默认退出码为零,但也可以使用 EXIT_CODE 指定退出码(必须是整数)。
switch-root ROOT [INIT] 将系统的根文件系统切换到 ROOT 目录, 并执行新系统上的 INIT 程序(PID=1)。 此命令仅应该在初始内存盘("initrd")中使用。
suspend 休眠到内存。 相当于启动 suspend.target 目标。这是一个无阻塞命令,也就是将休眠操作排入任务队列之后,不等待其完成就立即返回。
hibernate 休眠到硬盘。 相当于启动 hibernate.target 目标。 这是一个无阻塞命令,也就是将休眠操作排入任务队列之后,不等待其完成就立即返回。
hybrid-sleep 进入混合休眠模式。也就是同时休眠到内存和硬盘。 相当于启动 hybrid-sleep.target 目标。 这是一个无阻塞命令,也就是将休眠操作排入任务队列之后,不等待其完成就立即返回。