• 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 来查看相关服务的信息

  • 相关阅读:
    SQL Server循环插入
    【转】Entity Framework 6 Code First 实践系列(1):实体类配置-根据依赖配置关系和关联
    【转】iis7下站点日志默认位置
    如何设置输入IP地址就直接访问到某一个网站
    面向接口编程
    Lambda表达式
    关于单体化和属性文件的说明
    cesium-长度测量和面积测量
    Cesium官方教程13--Cesium和Webpack
    Cesium官方教程12--材质(Fabric)
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/14626663.html
Copyright © 2020-2023  润新知