[Linux] 利用 Systemd 管理應用程式 – 常用指令

為了要讓 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

來源:

  1. 使用Systemd管理应用
  2. Limit the size of .log files & the journal
  3. journalctl log file size
  4. https://www.suse.com/zh-tw/documentation/sled-12/book_sle_admin/data/journalctl_filtering.html


這裡的資訊對您有用嗎?歡迎斗內給我