Linux服務文件_常駐程式(服務配置)


每次主機重啟有些應用程式會希望可以自動啟動
有一個詞,英文原文:daemon。
A daemon is a service process that runs in the background and supervises the system or provides functionality to other processes.

港台用語:「常駐程式」
大陸用語:「守護進程」


記得在以前幾間公司時候這三種用語都聽過XDD
有時候可能有大陸對岸分公司的用語
或是類似跟外國廠商的信件用語
基本上就是代表一個在背景執行類似跑無窮迴圈固定會執行的任務

有時候沒有共同用語、用詞,容易會錯意增加溝通成本。
基本上於Linu作業系統,我們會藉由Systemd 建立服務文件以啟動和監視基礎 Web 應用。
可以將其想成windows服務,一樣概念只是在windows server通常用圖形介面配置,Linux環境可能就稍微要用比較難一點的指令跟配置文件了。

systemd is a software suite that provides an array of system components for Linux operating systems. The main aim is to unify service configuration and behavior across Linux distributions.

systemd 是一種用於初始化、管理和跟蹤系統和服務的工具,而 /lib/systemd/system 目錄則是存放相關配置文件的地方,這些配置文件指定了如何管理和運行這些服務。




/lib/systemd/system 目錄則是 systemd 使用的一個主要目錄。在這個目錄中,存放了系統級的服務單位檔案(unit files)。這些服務單位檔案以 .service 結尾的文件形式存在,用來定義和控制如何啟動和管理服務。

每個 .service 文件包含了如何啟動、停止、重啟和管理相關服務的指令。這些服務可以是後台運行的伺服器程序,比如網絡服務、數據庫、或者其他任何在系統啟動時或需要時應該運行的程序。








按i 開始編輯輸入

輸入完成後,按下 ESC後
返回一般指令模式
再輸入:wq


service檔案編輯
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=BingoSys
[Service]
WorkingDirectory=/var/www/net
ExecStart=sudo nohup dotnet BingoSys.dll &
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=BingoSys
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target

sudo systemctl enable marblesrace.service
啟用配置的服務


要記得檢查看看配置正常與否
sudo systemctl status marblesrace.service



當要再次編輯時候記得你是root身分之後用vim打開時
會詢問(按E即可繼續編修)


之後就循著這套方式
vim 文檔名 -> 按i編輯 -> 按ESC回一般命令模式 -> 輸入:wq存檔跳出

修正一下
移除 ExecStart 中的 sudo 和 nohup:
在 systemd 服務文件中,不需要使用 sudo,因為服務會以指定的用戶身份運行(在本例中為 root)。

此外不需要使用 nohup 和 &,因為 systemd 會自動處理服務的後台運行。

確保 ExecStart 路徑正確,需要改為完整路徑。




Ref:
How to daemonize a process or service with Systemd
https://baykara.medium.com/how-to-daemonize-a-process-or-service-with-systemd-c34501e646c9

https://www.freedesktop.org/software/systemd/man/latest/daemon.html

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題