zoukankan      html  css  js  c++  java
  • 编写使用systemctl启动服务脚本

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

       

    [Unit]

    Description=MonitorJSCloud

    After=network.service

       

    [Service]

    Type=simple

    ExecStart=/usr/bin/python/root/test/ping_test.py

    Restart=always

    RestartSec=10

    PrivateTmp=true

       

    [Install]

    WantedBy=multi-user.target

       

       

    对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。

       

    systemctl enable httpd

       

    上面的命令相当于在 /etc/systemd/system 目录添加一个符号链接,指向 /usr/lib/systemd/system 里面的 httpd.service 文件。

    这是因为开机时, Systemd 只执行 /etc/systemd/system 目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果。

       

       

    $ sudo systemctl status httpd

    httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
    Active: active (running) since
    2014-12-05 12:18:22 JST; 7min ago
    Main PID: 4349 (httpd)
    Status: "Total requests: 1; Current requests/sec: 0; Current traffic: 0 B/sec"
    CGroup: /system.slice/httpd.service
    ├─4349 /usr/sbin/httpd -DFOREGROUND
    ├─4350 /usr/sbin/httpd -DFOREGROUND
    ├─4351 /usr/sbin/httpd -DFOREGROUND
    ├─4352 /usr/sbin/httpd -DFOREGROUND
    ├─4353 /usr/sbin/httpd -DFOREGROUND
    └─4354 /usr/sbin/httpd -DFOREGROUND

    1205 12:18:22 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
    12
    05 12:18:22 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
    12
    05 12:22:40 localhost.localdomain systemd[1]: Started The Apache HTTP Server.

       

    Loaded行:

    配置文件的位置,是否设为开机启动

    Active行:

    表示正在运行

    Main PID行:

    主进程ID

    Status行:

    由应用本身(这里是 httpd )提供的软件当前状态

    CGroup块:

    应用的所有子进程

    日志块:

    应用的日志

       

       

    $ systemctl cat sshd.service

    查看配置文件

       

    配置文件详解

       

    Unit

     

      

    After

    表示服务需要在***服务启动之后执行

    无依赖

    Before

    表示服务需要在***服务启动之前执行

    无依赖

    Wants

    弱依赖关系

      

    Requires

    强依赖关系

    ***停止之后本服务也必须停止

    Service

      

      

    EnvironmentFile

    环境参数文件

    EnvironmentFile=/etc/sysconfig/sshd

    以key=value的形式保存

    以$key形式读取

    ExecStart

    启动进程时执行的命令

      

    ExecReload

    重启服务时执行的命令

      

    ExecStop

    停止服务时执行的命令

      

    ExecStartPre

    启动服务之前执行的命令

      

    ExecStartPost

    启动服务之后执行的命令

      

    ExecStopPost

    停止服务之后执行的命令

      

       

    所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如,EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。

       

    Type

      

    simple(默认值):

    ExecStart字段启动的进程为主进程

    forking

    ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程

    oneshot

    类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务

    dbus

    类似于simple,但会等待 D-Bus 信号后启动

    notify

    类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务

    idle

    类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合

       

       

    KillMode

      

    control-group(默认值):

    当前控制组里面的所有子进程,都会被杀掉

    process

    只杀主进程

    mixed

    主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号

    none

    没有进程会被杀掉,只是执行服务的 stop 命令。

       

       

    Restart

      

    no(默认值):

    退出后不会重启

    on-success

    只有正常退出时(退出状态码为0),才会重启

    on-failure

    非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启

    on-abnormal

    只有被信号终止和超时,才会重启

    on-abort

    只有在收到没有捕捉到的信号终止时,才会重启

    on-watchdog

    超时退出,才会重启

    always

    不管是什么退出原因,总是重启

       

       

    修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务。

       

    # 重新加载配置文件
    $ systemctl daemon-reload

       

       

       

       

       

       

       

       

  • 相关阅读:
    MFC程序自动生成dump Windbg文件
    .net 播放音频(使用winmm.dll)
    media player 网页代码属性
    标记ATL控件为安全控件
    js方法重写
    cab包inf文件配置
    凌阳单片机(61板)USB下载线原理与制作
    html 智能检查,修复
    差异性发展 浙江工商局长郑宇民“智斗”央视女主持董倩
    什么是有效高效的沟通
  • 原文地址:https://www.cnblogs.com/liuxia912/p/10960610.html
Copyright © 2011-2022 走看看