Systemd 服務:比啟動停止服務更進一步

Documentation= https://wiki.minetest.net/Main_Page

[Service]

Type= simple

User=

ExecStart= /usr/games/minetest --server

ExecStartPost= /home//bin/mtsendmail.sh "Ready to rumble?"

"Minetest Starting up"

TimeoutStopSec= 180

ExecStop= /home//bin/mtsendmail.sh "Off to bed. Nightie night!"

"Minetest Stopping in 2 minutes"

ExecStop= /bin/sleep 120

ExecStop= /bin/kill -2 $MAINPID

[Install]

WantedBy= multi-user.target

在嘗試新的服務之前,你還需要對郵件腳本做一些調整:

#!/bin/bash

# mtsendmail

sleep 20

echo $1 | mutt -F /home//.muttrc -s "$2" my_minetest@mailing_list.com

sleep 10

這是因為系統需要一定的時間啟動郵件系統(這裡等待 20 秒),也需要一定時間完成郵件發送(這裡等待 10 秒)。注意腳本中的等待時間數值適用於我的系統,你可能需要針對你的系統調整數值。

大功告成啦。執行如下操作:

sudo systemctl enable minetest

你的 Minetest 服務將在系統啟動時自動啟動,在系統關閉時友好關閉並通知你的用戶。

總結

事實上 Debian、 Ubuntu 和一些族類的發行版提供了 minetest-server 這個特別的軟件包,可以提供一部分上述功能,(但不包括郵件通知功能)。即使如此,你還是可以建立你獨有的自定義服務;事實上,你目前建立的服務比 Debian 默認提供的服務更加通用,可以提供更多功能。

更進一步的說,我們這裡描述的流程可以讓你將大多數簡單服務器轉換為服務,類型可以是遊戲、網站應用或其它應用。同時,這也是你名副其實地踏入 systemd 大師殿堂的第一步。


via: https://www.linux.com/blog/learn/2018/5/systemd-services-beyond-starting-and-stopping


分享到:


相關文章: