什么是systemd service?

systemd service是一种以.service 结尾的配置文件,是一个专用于Linux操作系统的系统与服务管理器。简单来说,用于后台以守护精灵(daemon)的形式运行程序。

systemd服务的内容主要分为三个部分,控制单元[Unit]的定义、服务[Service]的定义、以及[Install]安装部分。

示例详解

[Unit]

Description=httpd        #当前配置文件的描述信息

After=network.target     #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动

[Service]

Type=forking             #定义启动类型

ExecStart=/usr/local/apache/bin/apachectl start     #定义启动进程时执行的命令

ExecReload=/usr/local/apache/bin/apachectl restart  #重启服务时执行的命令

ExecStop=/usr/local/apache/bin/apachectl stop       #定义关闭进程时执行的命令

PrivateTmp=true                                     #是否分配独立空间

[Install]

WantedBy=multi-user.target    #表示多用户命令行状态

字段详解

[Unit]字段

这个字段主要给出服务描述、启动顺序和依赖关系。

字段说明

·         Description:给出当前服务的简单描述。

·         Documentation:给出文档位置。

·         After:表示在什么服务之后启动。

·         Before:表示在什么服务之前启动。

·         Wants:表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。

·         Requires:则表示”强依赖”关系,即某服务停止运行或退出,改服务也必须停止运行。

After和Before只涉及启动顺序,不涉及依赖关系。

Wants与Requires只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。

[Server]字段

这个字段主要给出服务的启动行为,如何启动、重启、停止。

字段说明

·         Type:定义启动类型。它可以设置的值如下:

o    simple(默认值):ExecStart字段启动的进程为主进程。

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

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

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

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

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

·         ExecStart:定义启动进程时执行的命令,就是手动启动时执行的命令。

·         ExecReload:重启服务时执行的命令。

·         ExecStop:停止服务时执行的命令。

·         ExecStartPre:启动服务之前执行的命令。

·         ExecStartPost:启动服务之后执行的命令。

·         ExecStopPost:停止服务之后执行的命令。

·         KillMode:定义Systemd如何停止sshd服务。它可以设置的值如下:

o    control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。

o    process:只杀主进程。

o    mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号。

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

·         Restart:定义了sshd退出后,Systemd的重启方式。它可以设置的值如下:
对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal。

o    no(默认值):退出后不会重启。

o    on-success:只有正常退出时(退出状态码为0),才会重启。

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

o    on-abnormal:只有被信号终止和超时,才会重启。

o    on-abort:只有在收到没有捕捉到的信号终止时,才会重启。

o    on-watchdog:超时退出,才会重启。

o    always:不管是什么退出原因,总是重启。

·         RestartSec:表示Systemd重启服务之前,需要等待的秒数。

·         user:可以设置服务的用户名。

·         WorkingDirectory:指定服务的安装目录。

[Install]字段

该字段定义如何安装这个配置文件,即怎样做到开机自启。

字段说明:

·         WantedBy:表示该服务所在的Target。

Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是服务所在的Target是multi-user.target

Systemd有默认的启动Target。就是multi-user.target,在这个组里的所有服务,都将开机启动。

查看multi-user.target包含的所有服务:

systemctl list-dependencies multi-user.target

最新文章

  1. 每天一个 Linux 命令(21):find命令之xargs
  2. 如何消除inline-block元素间间距问题(转)
  3. Request 接收参数乱码原理解析二:浏览器端编码原理
  4. XMPP框架下微信项目总结(1)环境配置
  5. 502 Server dropped connection
  6. 解释型语言和编译型语言如何交互?以lua和c为例
  7. C.xml
  8. atoi函数的实现(考虑不同进制、溢出)
  9. 关于JDBC链接数据库的代码实现
  10. LINQ to SQL 运行时动态构建查询条件
  11. oracle 两个时间相减
  12. Java程序员需要学习的知识点
  13. ListView多选操作模式——上下文操作模式
  14. 复制(5)——事务复制中的发布者(Publisher)
  15. UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 26269: illegal multibyte sequence
  16. OC中extern,static,const的用法
  17. Bzoj4872: [Shoi2017]分手是祝愿
  18. RabbitMQ广播:fanout模式
  19. vuejs2.0使用Sortable.js实现的拖拽功能
  20. Codeforces Gym100543L Outer space invaders 区间dp 动态规划

热门文章

  1. docker可视化
  2. KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(二)
  3. centOS查看修改时区
  4. 【读书笔记】C#高级编程 第二十章 诊断
  5. [Linux]-screen命令-切换终端
  6. Windows服务器TLS协议
  7. Python数据科学手册-Pandas:数值运算方法
  8. MyBatis创建第二个项目
  9. K8S Ingress使用|常见问题列表
  10. python csv写入多列