systemctl大全及实操

相关网站

阮一峰

入门命令

命令命令介绍具体用法
systemctl --version检查msystecrl是否安装并查看systemctl版本systemctl --version
ps -ef | grep systemd查看msysted是否启动ps -ef | grep systemd
whereis systemd查看systemd的二进制文件和库文件的安装位置whereis systemd
whereis systemctl查看systemctl的二进制文件和库文件的安装位置whereis systemctl
cd /etc/systemd/system进入systemctl文件配置目录cd /etc/systemd/system

配置文件的区块

Unit

通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。

  • Description:简短描述
  • Documentation:文档地址
  • Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
  • Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败
  • BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
  • Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
  • After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动
  • Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
  • Condition…:当前 Unit 运行必须满足的条件,否则不会运行
  • Assert…:当前 Unit 运行必须满足的条件,否则会报启动失败

Service

用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。

  • Type:定义启动时的进程行为。它有以下几种值。
  • Type=simple:默认值,执行ExecStart指定的命令,启动主进程
  • Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
  • Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
  • Type=dbus:当前服务通过D-Bus启动
  • Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
  • Type=idle:若有其他任务执行完毕,当前服务才会运行
  • ExecStart:启动当前服务的命令
  • ExecStartPre:启动当前服务之前执行的命令
  • ExecStartPost:启动当前服务之后执行的命令
  • ExecReload:重启当前服务时执行的命令
  • ExecStop:停止当前服务时执行的命令
  • ExecStopPost:停止当其服务之后执行的命令
  • RestartSec:自动重启当前服务间隔的秒数
  • Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、- on-abort、on-watchdog
  • TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
  • Environment:指定环境变量

Install

通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。它的主要字段如下。

  • WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + - .wants后缀构成的子目录中
  • RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
  • Alias:当前 Unit 可用于启动的别名
  • Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit

举例

[Unit]
Description=Yii Queue Worker (xxx) %I
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
ExecStart=/usr/local/php7.3/bin/php /xxx/yii queue-sms/listen --verbose
Restart=on-failure

[Install]
WantedBy=multi-user.target

通用命令

命令命令介绍具体用法
systemctl reboot重启系统systemctl reboot
systemctl status显示系统状态systemctl status
systemctl status application.service显示单个 Unit 的状态systemctl status application.service(如:systemctl status nginx.service)
systemctl is-active application.service显示某个 Unit 是否正在运行systemctl is-active application.service (如:systemctl is-active nginx.service)
systemctl is-failed application.service显示某个 Unit 是否处于启动失败状态systemctl is-failed application.service
systemctl is-enabled application.service显示某个 Unit 服务是否开机自启动systemctl is-enabled application.service
systemctl enable application.service设置开机启动systemctl enable application.service
systemctl disable application.service取消开机启动systemctl disable application.service
systemctl start application.service立即启动一个服务systemctl start application.service
systemctl stop application.service立即停止一个服务systemctl stop application.service
systemctl restart application.service重启一个服务systemctl restart application.service
systemctl kill application.service杀死一个服务的所有子进程systemctl kill application.service
systemctl reload application.service重新加载一个服务的配置文件systemctl reload application.service
systemctl daemon-reload重载所有修改过的配置文件systemctl daemon-reload

补充命令

命令命令介绍具体用法
systemd-analyze查看启动耗时systemd-analyze
systemd-analyze blame查看每个服务的启动耗时systemd-analyze blame
systemd-analyze critical-chain显示瀑布状的启动过程流systemd-analyze critical-chain
systemd-analyze critical-chain application.service显示指定服务的启动流systemd-analyze critical-chain application.service (如:systemd-analyze critical-chain nginx.service)
systemctl list-units列出正在运行的 Unitsystemctl list-units
systemctl list-units --all列出所有Unit,包括没有找到配置文件的或者启动失败的systemctl list-units --all
systemctl list-units --all --state=inactive列出所有没有运行的 Unitsystemctl list-units --all --state=inactive
systemctl list-units --failed列出所有加载失败的 Unitsystemctl list-units --failed
systemctl list-units --type=service列出所有正在运行的、类型为 service 的 Unitsystemctl list-units --type=service
systemctl list-dependencies (–all) application.service列出一个 Unit 的所有依赖systemctl list-dependencies (–all) application.service
  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱好者777

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值