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 開始編輯輸入
返回一般指令模式
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
會詢問(按E即可繼續編修)
vim 文檔名 -> 按i編輯 -> 按ESC回一般命令模式 -> 輸入:wq存檔跳出
修正一下
移除 ExecStart 中的 sudo 和 nohup:
在 systemd 服務文件中,不需要使用 sudo,因為服務會以指定的用戶身份運行(在本例中為 root)。
此外不需要使用 nohup 和 &,因為 systemd 會自動處理服務的後台運行。
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
留言
張貼留言