Linux【Ubuntu】系统 .service文件内容详解

Linux【Ubuntu】系统 .service文件内容详解

1、标签详解

[Unit] 部分标签:

  • Description: 对服务的简短描述。
  • Documentation: 指向相关文档的URL或路径。
  • Requires: 服务依赖的其他单元。
  • Wants: 服务希望启动的其他单元。
  • BindsTo: 绑定到其他单元,如果其他单元停止,该单元也停止。
  • After: 在指定的其他单元之后启动。
  • Before: 在指定的其他单元之前启动。
  • Conflicts: 与其他单元冲突。
  • ConditionPathExists: 根据特定条件判断是否启动单元
  • 其他: ………
**使用示例:**
[Unit]
Description=My custom script service
Documentation=https://example.com/my-service-docs
Requires=network.target
Wants=network-online.target
BindsTo=another-service.service
After=network.target
Before=shutdown.target
Conflicts=some-service.service
ConditionPathExists=/etc/my-service/config

[Service] 部分标签

  • Type: 服务类型,如simple、forking、oneshot、dbus、notify、idle
        simple: 默认类型,ExecStart指定的命令为主进程。
        forking: ExecStart指定的命令会通过forking产生新进程并作为主进程。
        oneshot: 服务在启动后立即退出。
        dbus: 服务通过D-Bus启动。
        notify: 服务在启动时通过sd_notify发送通知。
        idle: 服务在其他所有作业执行完成后启动。
  • ExecStart: 启动服务时执行的命令。
  • ExecStartPre: 启动前执行的命令。
  • ExecStartPost: 启动后执行的命令。
  • ExecReload: 重新加载服务时执行的命令。
  • ExecStop: 停止服务时执行的命令。
  • ExecStopPost: 停止后执行的命令。
  • Restart: 服务重启策略,如always、on-failure等。
      详细介绍: Restart标签是Linux systemd服务文件中的一个重要配置,它定义了服务在何种情况下应该自动重启。通过合理配置,可以增强服务的稳定性和容错能力。通常,Restart标签会与RestartSec标签一起使用,以控制重启的延迟时间。
      语法: Restart=<restart-condition>
      常见的Restart条件:
        no: 默认值,不重启服务。
        always: 无论服务如何退出,都重启服务。
        on-success: 仅在服务正常退出时重启。
        on-failure: 仅在服务非正常退出时重启(退出代码非零,信号导致的退出等)。
        on-abnormal: 仅在服务由于信号(如SIGSEGV、SIGABRT等)导致的异常退出时重启。
        on-abort: 仅在服务由于系统调用abort()导致的退出时重启。
        on-watchdog: 仅在服务由于守护进程超时(watchdog timeout)导致的退出时重启。
  • RestartSec: 服务重启前的等待时间。
  • TimeoutStartSec: 启动超时时间。
  • TimeoutStopSec: 停止超时时间。
  • RuntimeMaxSec: 服务运行的最长时间。
  • Environment: 环境变量设置。
  • WorkingDirectory: 服务运行的工作目录。
  • User: 以哪个用户身份运行服务。
  • Group: 以哪个用户组身份运行服务。
  • StandardOutput: 标准输出设置。
  • StandardError: 标准错误设置。
  • 其他: ………
**使用示例:**
[Service]
Type=simple
#路径必须使用绝对路径,也可以是带参数的程序【命令】
ExecStart=/usr/local/bin/my_script.sh
ExecStartPre=/usr/bin/pre-script.sh
ExecStartPost=/usr/bin/post-script.sh
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
ExecStopPost=/usr/bin/stop-post-script.sh
Restart=on-failure
RestartSec=5s
TimeoutStartSec=30s
TimeoutStopSec=30s
RuntimeMaxSec=3600s
Environment="VAR1=value1" "VAR2=value2"
WorkingDirectory=/usr/local/my_service
User=myuser
Group=mygroup
StandardOutput=journal
StandardError=journal

[Install] 部分标签

  • WantedBy: 指定该服务在哪些目标启动。
  • RequiredBy: 指定该服务被哪些目标所需。
  • Also: 该单元的其他相关单元。
  • Alias: 单元的别名。
  • 其他: ………
**使用示例:**
[Install]
WantedBy=multi-user.target
RequiredBy=another-service.target
Also=another-service.service
Alias=my-service-alias
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Darrich

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值