TL的每日学习

TL的每日学习

Systemd启动配置常用参数

1058
2023-04-08
Systemd启动配置常用参数

Systemd启动配置常用参数

1. [Unit]参数

[Unit]参数定义了service单元的元数据,是systemd下的主要块,包括以下参数:

  • Description:描述该unit的信息,可以是任何你想要指定的字符串信息。

  • After:设置当前unit所依赖的其他unit启动完成后再启动服务。指定的单元应该以服务名称的方式指定。可以指定多个unit,多个unit之间空格隔开。

  • Requires:设置该unit所依赖的其他unit。如果依赖的unit没有启动,则当前unit也不会被启动。

  • PartOf:配置关联的单元列表,即如果一个单元结束,这个关联的单元列表也同样结束。可以指定多个单元之间以空格隔开。

示例:

[Unit]
Description=My Awesome Service
After=network.target
Wants=network-online.target
Requires=mysql.service
PartOf=awesome.service nginx.service

2. [Service]参数

[Service]参数定义了服务单元的配置信息,包括以下参数:

  • Type:定义服务进程的类型,取值为simple、forking、oneshot、notify和dbus。一般情况下,我们常用的是simple,表示服务以前台进程的形式运行,而且systemd通过ExecStart命令执行服务程序。

  • User:指定服务进程的运行用户,可以是一个已存在的用户名或者是一个UID(UserID)。

  • Group:指定服务进程的运行组,默认为该用户的主组。

  • ExecStart:定义启动服务进程的命令,可以使用绝对路径或相对路径,指定一个或多个执行命令。可以在同一行用“\”来指定多个命令,也可以使用多行的方式来指定多个命令。

  • Restart:设置服务进程退出后的自动重启方式。取值包括no(不自动重启)、always(总是自动重启)、on-success(只有在服务运行成功后重启)和on-failure(只有在服务运行失败后重启)。

  • RestartSec:设置服务进程重启间隔的时间,单位为秒。

  • StartLimitIntervalSec:设置一个时间段,在这个时间段中如果服务进程重启次数超过StartLimitBurst设置的值,则该服务会被自动禁止启动。时间段指定的是一个整数和一个时间单位的组合,如60s或5m。

  • StartLimitBurst:设置服务进程在StartLimitIntervalSec指定的时间段中允许重启的次数。

  • WorkingDirectory:设置服务程序的工作目录,也就是服务程序的根目录路径。

  • EnvironmentFile:设置服务进程运行时的环境变量文件路径。

  • Environment:设置服务进程运行时的环境变量,可以是一个字符串的键值对,多个环境变量间以空格隔开。

示例:

[Service]
Type=simple
User=nobody
Group=nobody
ExecStart=/usr/local/bin/my-app
Restart=on-failure
RestartSec=10s
StartLimitIntervalSec=60s
StartLimitBurst=4
WorkingDirectory=/var/lib/my-app
EnvironmentFile=/etc/my-app/config
Environment="MY_APP_VERSION=1.0.0" "MY_APP_HOST=127.0.0.1"

3. [Install]参数

[Install]参数定义了服务单元的安装、启动和启动级别信息,包括以下参数:

  • WantedBy:指定当前unit希望安装到哪个目标之下,表示当前unit会在指定的目标之下并行运行。

  • RequiredBy:表示当前unit总是在指定目标之下运行,并且在指定目标启动之前必须启动这个unit。

示例:

[Install]
WantedBy=multi-user.target
RequiredBy=nginx.service

下面是一个nacos 服务配置示例

[Unit]
Description=nacos
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/data/service/nacos
ExecStart=java -jar /data/service/nacos/nacos.jar

[Install]
WantedBy=multi-user.target