Linux Ubuntu - systemctl startと同じパスである.serviceファイルを使用してExecStartを実行します。

Linux Ubuntu - systemctl startと同じパスである.serviceファイルを使用してExecStartを実行します。

私はLinuxに初めて触れたので、私の質問は明確ではないようです。将来的には、Linuxを十分に学んで、より簡潔にすることを願っています。

問題は、明らかな理由なくクラッシュするサービス(Thingsboard 3.6.1PE)を実行しているサーバーがあることです(ホワイトラベルが原因であるようですが、より徹底的に検索するのに十分なこのOSを知りません)。サービスがクラッシュした場合は、自動的に再起動することにしました。最善の解決策ではありませんが、作業を完了する必要があります。

私はそれを/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

問題が解決しました。@muruluこれにコメント:

「systemctl stop thingsboardを使用した後、自動的に再起動する必要があります。」...これは意図されています。管理者がサービスを明示的に停止した後に自動的に再起動するようにサービスを設定できる場合、ほとんどの管理者は狂います。代わりに、テストするには、Restart=Always外部でプロセスを終了するか、別の方法で終了するようにしてください。

おすすめ記事