.net Core 開發api服務,附加守護程序


.net Core 開發api服務,附加守護程序


.net Core 開發api服務,附加守護程序

前言

我們一般可以在Linux服務器上執行 dotnet 命令來運行我們的.net Core WebApi應用。但是這樣運行起來的應用很不穩定,關閉終端窗口之後,應用也會停止運行。為了讓其可以穩定運行,我們需要讓它變成系統的守護進程,成為一種服務一直在系統中運行,出現異常時也能重新啟動。Linux系統有自己的守護進程管理工具 Systemd 。systemd 是內核啟動後的第一個用戶進程,PID 為1,是所有其它用戶進程的父進程。它直接與內核交互,性能出色,可以提供用於啟動、停止和管理進程的許多強大的功能。我們完全可以將程序交給 Systemd ,讓系統統一管理,成為真正意義上的系統服務。systemctl 用於管理 systemd 的行為,替換之前的 sysvinit 和 upstart。

創建服務文件

創建服務定義文件:

<code>vim /etc/systemd/system/qf-intecabinet.service/<code>

以下是應用的一個示例服務文件:

<code>[Unit]
Description=運行Qf.InteCabinet服務

[Service]
WorkingDirectory=/opt/InteCabinet # 依賴環境,可以指定多個

ExecStart=/usr/bin/dotnet /opt/InteCabinet/Qf.InteCabinet.WebApi.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=qf-intecabinet
User=root # 管理服務的用戶,用戶必須存在並且擁有正確應用文件的所有權
Environment=ASPNETCORE_ENVIRONMENT=Production # 環境變量
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target # 該服務所在的Target/<code>

管理服務

保存該文件並啟用該服務

<code>systemctl enable qf-intecabinet.service/<code>

啟動該服務

<code>systemctl start qf-intecabinet.service/<code>

查看服務狀態

<code>systemctl status qf-intecabinet.service/<code>

查看日誌

<code>journalctl -fu qf-intecabinet.service/<code>

使用時間選項(如 --since today、--until 1 hour ago)或這些選項的組合可以減少返回的條目數

<code>journalctl -fu qf-intecabinet.service --since "2020-01-01" --until "2020-03-01 12:00"/<code>

關閉服務

<code>systemctl stop qf-intecabinet.service/<code>


分享到:


相關文章: