在Linux中,shell腳本(shell script)常用於運行各種自動化的流程,包含API串接,設置和啟動應用服務等等,腳本語法也相對易學易讀,因此頗受大部分使用者的喜愛。但若需要讓shell腳本能長期穩定運行,則建議將shell腳本轉換到系統管理服務器(systemd service)來運行,將有下列幾個優點,使得該服務的運作可有效被systemd管理。
1.Linux系統啟動後,可自動啟動。
2.服務異常退出後,可自動重啟。
3.透過journalctl集中管理該服務的日誌(log),可用於問題測試和偵錯。
2.服務異常退出後,可自動重啟。
3.透過journalctl集中管理該服務的日誌(log),可用於問題測試和偵錯。
上述影片即是一個實際案例,其利用shell腳本將樹莓派的溫度和電壓數值以固定週期傳到influxdb中,同時若溫度過高或電壓過低,則會藉由line notify發出提醒訊息,期望藉由該服務長期監控樹莓派的運作是否穩定,若有異常進程導致溫度過高或電壓過低,則可立刻查閱日誌並及時處理。話不多說,一起來看看如何將該shell腳本轉換到systemd service中。
a.利用nano新增systemd文件
sudo nano /etc/systemd/system/pi_tem_vol_detec.service
b.在該文件中,寫入下列內容
[Unit]
Description=Script to monitor Raspberry Pi voltage and temperature
After=network.target
[Service]
Type=simple
ExecStart=/your_path/pi_tem_vol_detec.sh
[Install]
WantedBy=multi-user.target
Description=Script to monitor Raspberry Pi voltage and temperature
After=network.target
[Service]
Type=simple
ExecStart=/your_path/pi_tem_vol_detec.sh
[Install]
WantedBy=multi-user.target
其中 /your_path/pi_tem_vol_detec.sh為shell腳本置放的路徑,完成後,儲存該文件並退出。
c.設定該文件的權限,並重新載入systemd,以添加該服務
sudo chmod 644 /etc/systemd/system/pi_tem_vol_detec.service
sudo systemctl daemon-reload
d.啟動該服務(pi_tem_vol_detec.service),並查看狀態
sudo systemctl start pi_tem_vol_detec
sudo systemctl status pi_tem_vol_detec
e.進一步將該服務設定為,開機時自動啟動
sudo systemctl enable pi_tem_vol_detec
沒有留言:
張貼留言