systemctl啟動服務時,配置日志輸出控制


轉載地址:https://blog.csdn.net/jeccisnd/article/details/103166554/

 

linux 的systemctl是一個系統服務管理工具,當我們想使用這個工具來管理服務,也是比較簡單的。請看例子:

我想把一個java程序ibot寫到系統服務里:

  1.  
    #[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description
  2.  
    #用於描述服務,After用於描述服務類別
  3.  
    [Unit]
  4.  
    Description=iBot Service
  5.  
    After=syslog.target
  6.  
     
  7.  
    #[Service]部分是服務的關鍵,是服務的一些具體運行參數的設置,這里Type=forking
  8.  
    #是后台運行的形式,PIDFile為存放PID的文件路徑,ExecStart為服務的具體運行命令,
  9.  
    #ExecReload為重啟命令,ExecStop為停止命令,PrivateTmp=True表示給服務分配獨
  10.  
    #立的臨時空間,注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使
  11.  
    #用相對路徑則會報錯!
  12.  
    #StandardOutput=null 是將程序業務日志輸出到空,也可以指定文件,或者交給journal處理
  13.  
     
  14.  
    [service]
  15.  
    Type=forking
  16.  
    ExecStart=/usr/local/java/bin/java -jar /usr/local/services/iBot-1.0.0-version.jar
  17.  
    SuccessExitStatus=143
  18.  
    ExecStop=/usr/bin/kill -15 $MAINPID
  19.  
    StandardOutput=null
  20.  
    #StandardOutput=/tmp/services/logs/iBot/iBot-run.log
  21.  
     
  22.  
    #[Install]部分是服務安裝的相關設置,可設置為多用戶的
  23.  
    [Install]
  24.  
    WantedBy=multi-user.target

其中,StandardOutput=null是我遇到過的問題,程序的日志交由journal處理后,journal把日志寫到了系統日志。日志產生了混亂。所以可以通過StandardOutput=null來控制,把日志輸出關閉。或者寫對別的文件里去。常見的參數有:

StandardInput=null
StandardOutput=inherit
StandardError=inherit

我們也可以通過systemctl show iBot 來查看相關服務的信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM