Linux Ubuntu - 使用 .service 文件执行 ExecStart,路径与 systemctl start 相同

Linux Ubuntu - 使用 .service 文件执行 ExecStart,路径与 systemctl start 相同

我对 Linux 很陌生,所以也许我的问题看起来不太清楚。希望以后我能学够Linux,更简洁。

问题是,我们的服务器上正在运行服务(Thingsboard 3.6.1PE),该服务在没有明显原因的情况下崩溃(白标签似乎是原因,但我不知道这个操作系统足以进行更彻底的搜索)。我决定在服务崩溃时自动重新启动服务。不是最好的解决方案,但它应该可以完成工作。

我修改/etc/systemd/system/thingsboard.service如下:

[Service]
ExecStart=/bin/bash /usr/share/thingsboard/bin/thingsboard.jar
Restart=always
RestartSec=5s

它允许使用systemctl start thingsboard- 之后服务工作正常。但我希望在使用 of 后systemctl stop thingsboard,它应该自动重新启动。它没有 - 相反它变得不活动:

     Loaded: loaded (/etc/systemd/system/thingsboard.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Thu 2024-02-01 11:45:10 CET; 4s ago
    Process: 1493891 ExecStart=/bin/bash /usr/share/thingsboard/bin/thingsboard.jar (code=killed, signal=TERM)
   Main PID: 1493891 (code=killed, signal=TERM)
        CPU: 7min 53.762s

无论如何,它会在以下之后上线systemctl start

     Loaded: loaded (/etc/systemd/system/thingsboard.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-02-01 11:46:06 CET; 1s ago
   Main PID: 1496816 (bash)
      Tasks: 28 (limit: 9388)
     Memory: 198.9M
        CPU: 5.612s
     CGroup: /system.slice/thingsboard.service

所以这是我的问题:我应该在 .service 文件中放入什么以使其重新启动?如果这是一个愚蠢的问题,请原谅我,但我对 Linux 还很陌生,我必须确保这项服务更加强大。我将非常感谢任何回复。也许我应该用另一种方式来做(我还不知道)。

答案1

问题解决了@穆鲁在这个评论:

“使用 systemctl stop thingsboard 后,它应该自动重新启动”......这是设计使然。如果可以将服务设置为在管理员明确停止后自动重新启动,那么它可能会让大多数管理员抓狂。相反,要测试Restart=Always,请从外部终止该进程,或通过其他方式使其终止

相关内容