為.net Core 3.0 WebApi 創(chuàng)建Linux守護(hù)進(jìn)程

前言

我們一般可以在Linux服務(wù)器上執(zhí)行 dotnet <app_assembly.dll> 命令來運(yùn)行我們的.net Core WebApi應(yīng)用。但是這樣運(yùn)行起來的應(yīng)用很不穩(wěn)定,關(guān)閉終端窗口之后,應(yīng)用也會(huì)停止運(yùn)行。為了讓其可以穩(wěn)定運(yùn)行,我們需要讓它變成系統(tǒng)的守護(hù)進(jìn)程,成為一種服務(wù)一直在系統(tǒng)中運(yùn)行,出現(xiàn)異常時(shí)也能重新啟動(dòng)。
Linux系統(tǒng)有自己的守護(hù)進(jìn)程管理工具 Systemd 。systemd 是內(nèi)核啟動(dòng)后的第一個(gè)用戶進(jìn)程,PID 為1,是所有其它用戶進(jìn)程的父進(jìn)程。它直接與內(nèi)核交互,性能出色,可以提供用于啟動(dòng)、停止和管理進(jìn)程的許多強(qiáng)大的功能。我們完全可以將程序交給 Systemd ,讓系統(tǒng)統(tǒng)一管理,成為真正意義上的系統(tǒng)服務(wù)。
systemctl 用于管理 systemd 的行為,替換之前的 sysvinit 和 upstart。

創(chuàng)建服務(wù)文件

創(chuàng)建服務(wù)定義文件:

vim /etc/systemd/system/qf-intecabinet.service

以下是應(yīng)用的一個(gè)示例服務(wù)文件:

[Unit]
Description=運(yùn)行Qf.InteCabinet服務(wù)

[Service]
WorkingDirectory=/opt/InteCabinet  # 依賴環(huán)境,可以指定多個(gè)
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  # 管理服務(wù)的用戶,用戶必須存在并且擁有正確應(yīng)用文件的所有權(quán)
Environment=ASPNETCORE_ENVIRONMENT=Production  # 環(huán)境變量
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target  # 該服務(wù)所在的Target

管理服務(wù)

保存該文件并啟用該服務(wù)

systemctl enable qf-intecabinet.service

啟動(dòng)該服務(wù)

systemctl start qf-intecabinet.service

查看服務(wù)狀態(tài)

systemctl status qf-intecabinet.service

查看日志

journalctl -fu qf-intecabinet.service

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

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

關(guān)閉服務(wù)

systemctl stop qf-intecabinet.service

參考資料

微軟官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容