%20%E6%96%87%E4%BB%B6%E6%94%BE%E5%85%A5%20%2Fetc%2Fsystemd%2Fsystem%20%E4%B9%8B%E5%89%8D%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%8E%E5%85%B6%E5%BC%80%E5%8F%91%E8%B7%AF%E5%BE%84%E6%B5%8B%E8%AF%95%E5%AE%83%EF%BC%9F.png)
我已经创建了一个服务文件,但这是我的第一个。
我想知道如果我将一个写得不好的服务放入/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