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!
