為了要讓 NetCore 背景執行利用了 Systemd 將服務掛在背景執行,應用程式的執行紀錄可以利用 journal 來觀看。
- 查詢版本
systemctl --version
- 已註冊清單
systemctl list-unit-files systemctl list-units --type=service
- 設定檔
[Unit] # 應用描述 Description=A test program # 應用文檔地址 Documentation=https://docs.example.com # 必須在某一個或多個單元之後啟動 After=network.target ssh.service # 依賴於某一個或多個單元 Requires=ssh.service [Service] # 進程啟動方式,有:simple(默認), forking, oneshot, notify, dbus, idle這幾種方式 Type=simple # 啟動服務之前執行的命令 ExecStartPre=/usr/bin/which hello # 啟動程序 ExecStart=/user/local/bin/hello # 啟動服務之後執行的命令 ExecStartPost=/bin/echo "start hello success." # 停止服務時執行的命令 ExecStop=/bin/echo "stop hello" # 重啟服務時執行的命令 ExecReload=/bin/kill -s HUP $MAINPID # 進程結束後重啟方式,可選值有:always, on-success, on-failure, on-abnormal, on-abort, on-watchdog Restart=on-failure # 重啟間隔秒數 RestartSec=30 # 標準輸出到 StandardOutput=syslog # 標準錯誤輸出到 StandardError=syslog # 設置syslog中log的程序名稱 SyslogIdentifier=helloexample # 設置syslog中log類型 SyslogFacility=local0 # 設置syslog中log級別,此處為info SyslogLevel=info # 程序運行時的用戶 User=root # 程序運行時分配的組 Group=root # 程序的環境變量 Environment=NODE_ENV=production # 依賴於 [Install] WantedBy=multi-user.target
- 目前 Log 大小
journalctl --disk-usage
- 僅顯示指定服務產生的訊息
journalctl _SYSTEMD_UNIT=avahi-daemon.service
來源: