systemd
systemctl 完整参数列表
概述
systemctl 是 systemd 系统和服务管理器的命令行工具,用于控制 systemd 服务、挂载点、设备等。
命令语法
1 | systemctl [OPTIONS...] COMMAND [UNIT...] |
全局选项 (Global Options)
基本选项
--version
- 显示程序版本--help
,-h
- 显示帮助信息--no-pager
- 不使用分页器--no-legend
- 不显示列标题和提示--no-ask-password
- 不请求用户密码--system
- 连接到系统服务管理器(默认)--user
- 连接到用户服务管理器--global
- 对所有用户启用/禁用单元文件--runtime
- 临时更改,重启后失效--quiet
,-q
- 静默模式--root=PATH
- 在指定的根目录下操作
输出控制
--output=MODE
,-o
- 更改日志输出模式short
- 默认输出格式short-iso
- 带ISO 8601时间戳short-precise
- 精确时间戳short-monotonic
- 单调时间戳verbose
- 详细输出export
- 适合导出的格式json
- JSON格式输出json-pretty
- 格式化的JSONjson-sse
- 服务器推送事件JSONcat
- 仅显示消息内容
--lines=N
,-n
- 显示最后N行日志--follow
,-f
- 持续输出新日志行--since=TIME
- 显示指定时间之后的日志--until=TIME
- 显示指定时间之前的日志
操作选项
--force
,-f
- 强制执行操作--kill-who=WHO
- 选择要终止的进程main
- 主进程control
- 控制进程all
- 所有进程
--signal=SIGNAL
,-s
- 指定发送的信号--fail
- 如果任何操作失败则退出--irreversible
- 将作业标记为不可逆--ignore-dependencies
- 忽略单元依赖关系--show-types
- 显示单元类型--job-mode=MODE
- 指定作业模式replace
- 替换现有作业(默认)fail
- 如果冲突则失败isolate
- 隔离启动ignore-dependencies
- 忽略依赖ignore-requirements
- 忽略需求
主机相关
--host=HOST
,-H
- 在远程主机上操作--machine=CONTAINER
,-M
- 在本地容器中操作
单元管理命令 (Unit Management)
状态查询
status [UNIT...]
- 显示单元状态--lines=N
,-n
- 显示最后N行日志--output=MODE
,-o
- 日志输出格式--no-pager
- 不使用分页器--full
- 显示完整的单元名称和日志消息
show [UNIT...]
- 显示单元属性--property=NAME
,-p
- 只显示指定属性--all
,-a
- 显示所有属性(包括空值)--value
- 只显示属性值,不显示属性名
cat [UNIT...]
- 显示单元文件内容list-units [PATTERN...]
- 列出已加载的单元--type=TYPE
,-t
- 按类型过滤单元--state=STATE
- 按状态过滤单元--all
,-a
- 显示所有单元(包括非活动的)--recursive
,-r
- 递归显示依赖单元--reverse
- 显示反向依赖--after
- 显示应在指定单元之后启动的单元--before
- 显示应在指定单元之前启动的单元--failed
- 仅显示失败的单元
list-unit-files [PATTERN...]
- 列出已安装的单元文件--type=TYPE
,-t
- 按类型过滤单元文件--state=STATE
- 按状态过滤单元文件--root=PATH
- 在指定根目录下查找
list-dependencies [UNIT]
- 显示单元依赖关系--reverse
- 显示反向依赖--after
- 显示排序依赖(After=)--before
- 显示排序依赖(Before=)--all
,-a
- 显示所有依赖层级
list-sockets [PATTERN...]
- 列出套接字单元--all
,-a
- 显示所有套接字--show-types
- 显示套接字类型
list-timers [PATTERN...]
- 列出定时器单元--all
,-a
- 显示所有定时器
list-jobs [PATTERN...]
- 列出活动作业
单元控制
start UNIT...
- 启动单元--no-block
- 不等待操作完成--job-mode=MODE
- 指定作业模式
stop UNIT...
- 停止单元--no-block
- 不等待操作完成
reload UNIT...
- 重新加载单元配置--no-block
- 不等待操作完成
restart UNIT...
- 重启单元--no-block
- 不等待操作完成
try-restart UNIT...
- 如果运行则重启单元--no-block
- 不等待操作完成
reload-or-restart UNIT...
- 重新加载或重启单元--no-block
- 不等待操作完成
try-reload-or-restart UNIT...
- 尝试重新加载或重启单元--no-block
- 不等待操作完成
isolate UNIT
- 启动单元并停止所有其他单元--no-block
- 不等待操作完成
kill UNIT...
- 向单元发送信号--kill-who=WHO
- 选择要终止的进程(main/control/all)--signal=SIGNAL
,-s
- 指定发送的信号
clean UNIT...
- 清理单元运行时数据--what=RESOURCES
- 指定要清理的资源类型configuration
- 配置state
- 状态cache
- 缓存logs
- 日志runtime
- 运行时数据all
- 所有资源
单元文件管理
enable UNIT...
- 启用单元文件--now
- 启用后立即启动单元--runtime
- 仅在本次启动期间启用--global
- 为所有用户启用(用户单元)
disable UNIT...
- 禁用单元文件--now
- 禁用前先停止单元--runtime
- 仅在本次启动期间禁用--global
- 为所有用户禁用(用户单元)
reenable UNIT...
- 重新启用单元文件--now
- 重新启用后立即启动单元--runtime
- 仅在本次启动期间重新启用
preset UNIT...
- 重置单元启用状态--preset-mode=MODE
- 指定预设模式full
- 完全预设(默认)enable-only
- 仅启用disable-only
- 仅禁用
preset-all
- 重置所有单元启用状态is-enabled UNIT...
- 检查单元是否启用mask UNIT...
- 屏蔽单元--runtime
- 仅在本次启动期间屏蔽--now
- 屏蔽前先停止单元
unmask UNIT...
- 取消屏蔽单元link PATH...
- 链接单元文件到单元文件搜索路径add-wants TARGET UNIT...
- 添加Wants依赖add-requires TARGET UNIT...
- 添加Requires依赖edit UNIT...
- 编辑单元文件get-default
- 获取默认目标set-default TARGET
- 设置默认目标
状态检查
is-active UNIT...
- 检查单元是否活动is-failed UNIT...
- 检查单元是否失败is-system-running
- 检查系统是否正在运行
系统管理命令 (System Management)
系统状态
list-machines
- 列出本地容器和主机list-environments
- 列出环境变量
系统控制
daemon-reload
- 重新加载systemd管理器配置daemon-reexec
- 重新执行systemd管理器emergency
- 进入紧急模式rescue
- 进入救援模式halt
- 停机--force
,-f
- 强制停机--no-wall
- 不向所有用户发送关机消息
poweroff
- 关机--force
,-f
- 强制关机--no-wall
- 不向所有用户发送关机消息
reboot
- 重启--force
,-f
- 强制重启--no-wall
- 不向所有用户发送重启消息
kexec
- 通过kexec重启exit [EXIT_CODE]
- 请求用户管理器退出switch-root ROOT [INIT]
- 切换到不同的根文件系统suspend
- 挂起系统hibernate
- 休眠系统hybrid-sleep
- 混合睡眠suspend-then-hibernate
- 挂起后休眠
环境管理命令 (Environment Management)
show-environment
- 显示环境变量set-environment VARIABLE=VALUE...
- 设置环境变量unset-environment VARIABLE...
- 取消设置环境变量import-environment [VARIABLE...]
- 导入环境变量
日志管理相关
日志查看选项(与journalctl配合使用)
当使用 systemctl status
时,以下选项影响日志显示:
--lines=N
,-n
- 显示最后N行日志--output=MODE
,-o
- 日志输出格式--no-pager
- 不使用分页器
单元类型 (Unit Types)
systemctl 可以操作以下类型的单元:
.service
- 服务单元(默认类型).socket
- 套接字单元.target
- 目标单元.device
- 设备单元.mount
- 挂载单元.automount
- 自动挂载单元.swap
- 交换单元.timer
- 定时器单元.path
- 路径单元.slice
- 切片单元.scope
- 作用域单元
退出状态码
0
- 成功1
- 一般性错误2
- 无效参数3
- 未实现的功能4
- 用户没有必要的权限5
- 程序未安装
常用示例
服务管理
1 | # 启动服务 |
系统信息
1 | # 列出所有服务 |
系统控制
1 | # 重新加载systemd配置 |
相关文件
/etc/systemd/system/
- 系统单元文件目录/usr/lib/systemd/system/
- 包管理器安装的单元文件/run/systemd/system/
- 运行时单元文件~/.config/systemd/user/
- 用户单元文件目录/etc/systemd/system.conf
- systemd主配置文件/etc/systemd/user.conf
- 用户管理器配置文件
注意事项
- 大多数systemctl命令需要root权限(除了查询命令)
- 使用
--user
选项可以管理用户服务 - 单元名称可以不带
.service
后缀(对于服务单元) - 使用通配符时要注意shell的展开规则
daemon-reload
在修改单元文件后必须执行- 某些命令在容器环境中可能受限
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 iehtian!