服务

  • centos7以后,linux允许使用systemctl来管理服务

    基本目录

  • 基本目录:/usr/lib/systemd/system/

    • 软件安装后,如果是通过服务启动,则服务的脚本就放置在该目录下
  • 管理员目录:/etc/systemd/system/

    • 自定义服务脚本目录,优先级高于基本目录,可以覆盖基本目录中的脚本

      基本命令

      1. systemctl [command] [unit]
      2. command 主要有:
      3. start :立刻启动后面接的 unit
      4. stop :立刻关闭后面接的 unit
      5. restart :立刻关闭后启动后面接的 unit,亦即执行 stop start 的意思
      6. reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效
      7. enable :设置下次开机时,后面接的 unit 会被启动
      8. disable :设置下次开机时,后面接的 unit 不会被启动
      9. status :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机默认执行否、登录等信息等!
      10. is-active :目前有没有正在运行中
      11. is-enable :开机时有没有默认要启用这个 unit

      编写service

  • 手动编写的service应该以.service结尾

  • 编写服务后应该先使用systemctl daemon-reload来重载服务
    1. [Unit] # 这个项目与此 unit 的解释、执行服务相依性有关
    2. Description=OpenSSH server daemon
    3. After=network.target sshd-keygen.service
    4. Wants=sshd-keygen.service
    5. [Service] # 这个项目与实际执行的指令参数有关
    6. EnvironmentFile=/etc/sysconfig/sshd
    7. ExecStart=/usr/sbin/sshd -D $OPTIONS
    8. ExecReload=/bin/kill -HUP $MAINPID
    9. KillMode=process
    10. Restart=on-failure
    11. RestartSec=42s
    12. [Install] # 这个项目说明此 unit 要挂载哪个 target 下面
    13. WantedBy=multi-user.target