在将 .service (systemd) 文件放入 /etc/systemd/system 之前,如何从其开发路径测试它?

在将 .service (systemd) 文件放入 /etc/systemd/system 之前,如何从其开发路径测试它?

我已经创建了一个服务文件,但这是我的第一个。

我想知道如果我将一个写得不好的服务放入/etc/systemd/system目录中会发生什么。
下次我的系统可能不会重新启动吗?

...我想在把它放在那里之前测试一下。

[Unit]
Description=ecoemploi backend métier
After=network-online.target

[Service]
Type=simple
User=%i
Restart=no

ExecStart=/home/lebihan/dev/Java/comptes-france/metier-et-gestion/ApplicationMetierEtGestion/java \
    --add-exports java.base/sun.nio.ch=ALL-UNNAMED \
    --add-opens java.base/java.util=ALL-UNNAMED \
    --add-opens java.base/java.nio=ALL-UNNAMED \
    --add-opens java.base/java.lang=ALL-UNNAMED \
    --add-opens java.base/java.lang.invoke=ALL-UNNAMED \
    -jar target/application-metier-et-gestion.jar

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

我还没有找到从当前的开发目录systemctl启动我的选项ecoemploi-back-metier.service,而不是在其/etc/systemd/service路径中搜索它。

我愿意做的测试的方式是什么?

答案1

只需将它们放入/etc/systemd/system;单元文件放在那里不要自动成为引导过程的一部分——只有当它们使用“安装”到例如 multi-user.target 时才会发生systemctl enable

您可以将自定义单位放在那里并手动设置systemctl start它们,没有“启用”设备在启动时启动。

一般来说,一个简单地启动失败的单元不会破坏启动过程,除非你让其他一些重要的单元依赖于它。如果您这样做,您可以使用systemd.mask=引导选项(内核命令行选项)使 systemd 在单次引导时忽略特定单元。

如果您想安全,可以将单元放置在内存中的位置,该位置在重新启动后不会保留。/run/systemd/system

相关内容