systemd 腳本,用於在應用程式伺服器關閉或系統重新啟動後立即啟動它

systemd 腳本,用於在應用程式伺服器關閉或系統重新啟動後立即啟動它

我有一個如下所示的新貴配置文件,它在 Ubuntu 14 中運行良好:

#/etc/init/data_server.conf
#sudo start data_server
#sudo stop data_server
#sudo status data_server

start on runlevel [2345]
stop on runlevel [016]

chdir /opt/hold/data_server
respawn

post-start script
    echo "data server started at `date +"%F %T"` on `hostname -f`" | mailx -r "[email protected]" -s "data server Started" "[email protected]"
end script

post-stop script
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec ./data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5

現在我們正在遷移到 Ubuntu 16,因此我們無法使用upstart,但看起來我們需要systemd在這裡使用。我需要做哪些更改才能編寫腳本systemd

我必須確保每當系統重新啟動或應用程式被終止時,它應該systemd自動啟動我的腳本,從而啟動我的data server.

答案1

你的新貴腳本將會發生很大的變化。您不需要手動指定這麼多指令,因此它也會短得多。

讓一個進程始終在啟動時啟動並在崩潰時重新啟動只需一行程式碼:

Restart=always

我不知道您需要保留多少自訂更改,但至少,您似乎需要保留chdirexec命令。

以下是您的應用程式的基本 systemd 腳本的範例:

[Unit]
Description=My-service

[Service]
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/path/to/data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always

[Install]
WantedBy=multi-user.target

我發現在編寫自訂單元文件時這是一個方便的資源:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

相關內容