zoukankan      html  css  js  c++  java
  • Linux添加自定义系统服务,开机自启

    一、chkconfig方式

      一般比较老的centos支持chkconfig,其添加步骤比较简单:

    1、在/etc/init.d/目录下新建一个自定义服务的文件如:myservice.sh

    2、添加下面两句到 #!/bin/bash 之后。

    1 # chkconfig: 2345 10 90 
    2 # description: myservice

    PS:不添加这两行会报错:执行chkconfig --add myservice后提示:service myservice does not support chkconfig

    PS:其中2345是默认启动级别,级别有0-6共7个级别

      等级0表示:表示关机 
      等级1表示:单用户模式 
      等级2表示:无网络连接的多用户命令行模式
      等级3表示:有网络连接的多用户命令行模式  
      等级4表示:不可用 
      等级5表示:带图形界面的多用户模式   
      等级6表示:重新启动

      10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。

    3、命令

    开启开机自启动服务:chkconfig myservice on

    添加开机自启动服务:chkconfig --add myservice 

    查看开机自启动服务:chkconfig --list myservice 

    二、systemctl方式(推荐)

      由于chkconfig是Redhat发行版特有的服务配置方式,在基于debian的发行版下原生不支持,因此使用systemctl方式添加自定义系统服务,更具优势。

      systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。

      systemctl管理的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]。

    [Unit]

      主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别

    [Service]

      Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

      Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

      Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

      Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

      Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

      Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。

      PIDFile:pid文件路径

      ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。

      ExecReload:指定单元停止时执行的命令或者脚本。

      ExecStop:指定单元停止时执行的命令或者脚本。

      PrivateTmp:True表示给服务分配独立的临时空间

      Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。

      RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。

      注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

    [Install]

      服务安装的相关设置,可设置为多用户的

    范例:

     1 [Unit]
     2 Description=myservice
     3 After=myservice.service
     4 
     5 [Service]
     6 Type=oneshot
     7 RemainAfterExit=yes
     8 ExecStart=/opt/myservice/start.sh
     9 ExecReload=
    10 ExecStop=/opt/myservice/stop.sh
    11 
    12 [Install]
    13 WantedBy=multi-user.target

    脚本授权:chmod 755 /usr/lib/systemd/system/myservice.service

    开机启动:systemctl enable myservice.service

    至此,每次开机都会执行/opt/myservice/start.sh,每次关机都会执行/opt/myservice/stop.sh。

    三、chkconfig与systemctl命令对照表

    PS:此表仅为命令对照,在chkconfig下配置的服务,是不能使用systemctl运行的!当然如果同时安装配置了两种方式的服务,肯定是都能用的。

  • 相关阅读:
    sql 自定义函数-16进制转10进制
    编写一个单独的Web Service for Delphi
    Web Service
    无需WEB服务器的WEBServices
    Svn总是提示输入账号密码
    阿里云服务器SQLSERVER 2019 远程服务器环境搭建
    svn客户端使用
    数据库设计规则(重新整理)
    数据库表字段命名规范
    怎样去掉DELPHI 10.3.3 启动后的 security alert 提示窗体
  • 原文地址:https://www.cnblogs.com/guanghe/p/15251934.html
Copyright © 2011-2022 走看看