🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > [官方汉化手册](http://www.jinbuguo.com/systemd/systemd.directives.html) ## Unit 配置 - `/usr/lib/systemd/system/` 真正的配置文件存放在那个目录 - `/etc/systemd/system/` 为映射到 `/usr/lib/systemd/system/` 的目录 - 配置文件的后缀名,就是该 Unit 的种类,比如`sshd.socket`。如果省略,Systemd 默认后缀名为`.service` ### 配置文件的格式 ``` [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] Type: 定义启动时的进程行为。它有以下几种值。 Type=simple:(默认值),执行ExecStart指定的命令,启动主进程 Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出 Type=oneshot: 用于那些只需要执行一次性动作而不需要持久运行的单元 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 停止当前服务之前等待的秒数 WorkingDirectory: 工作目录 Environment: 指定环境变量 EnvironmentFile: 指定当前服务的环境参数文件。该文件内部的key=value键值对,可以用$key的形式,在当前配置文件中获取 [Install] WantedBy: 它的值是一个或多个 Target, 当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中 RequiredBy: 它的值是一个或多个 Target,当 前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中 Alias: 当前 Unit 可用于启动的别名 Also: 会被同时激活的其他 Unit ,多个由空格隔开 ``` ### 抑制错误 所有的启动前都可以加上`-` 如 ``` EnvironmentFile=-/etc/sysconfig/sshd ``` ### 多个环境变量 ``` Environment=FLUENT_CONF=/etc/td-agent/td-agent.conf Environment=FLUENT_PLUGIN=/etc/td-agent/plugin ``` ### 修改配置文件后重启 ``` systemctl daemon-reload 重新加载配置文件 systemctl restart foobar 重启相关服务 ```