Linux编写systemd service服务

systemd是一个Linux系统下的初始化系统(init system)和服务管理器(service manager),由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时降低Shell的系统开销,最终代替常用的System V与BSD风格init程序。


systemd不仅负责启动操作系统,还接管了后台服务、结束、状态查询以及日志归档、设备管理、电源管理、定时任务等许多职责。它支持通过特定事件(如插入特定USB设备)和特定端口数据触发的按需(On-demand)任务。此外,systemd具有一系列特性,如支持并行化任务、采用Socket激活式与D-Bus总线激活式服务、按需启动守护进程、利用Linux的cgroups监视进程、支持快照和系统恢复、维护挂载点和自动挂载点,以及各服务间基于依赖关系进行精密控制等。


在systemd中,后台服务具有特殊的身份,即它是系统中PID值为1的进程。它提供了服务按需启动的能力,使得特定的服务只有在真正被请求时才启动。对于用户自定义的服务,systemd允许配置其启动依赖项目,从而确保服务按必要的顺序运行。
检视和控制systemd的主要命令是systemctl。总的来说,systemd是一个功能强大的系统和服务管理器,能够极大地提高Linux系统的启动速度和运行效率。

以下是关于systemd的详细概念及功能的描述:

概念

  1. 初始化系统:systemd作为Linux内核启动后的第一个进程(PID为1),负责管理和协调系统初始化过程中的各个服务。
  2. 服务管理器:它不仅管理系统的启动过程,还负责在系统运行时管理服务(如守护进程)的状态,确保它们按照正确的顺序启动、停止或重启。

功能

  1. 并行化启动:与SysV-init不同,systemd允许更多的服务并行启动,而不是依次执行启动脚本,从而提高了系统启动速度。
  2. 依赖管理:systemd能够识别服务间的依赖关系,确保服务按照必要的顺序启动和停止。用户还可以自定义服务的依赖关系。
  3. Socket与总线激活服务:为了提高服务的并行运行性能,systemd采用Socket激活式和总线激活式服务。
  4. 进程追踪与控制:systemd使用cgroups代替PID来追踪进程,确保即使是两次fork之后生成的守护进程也不会脱离其控制。
  5. 按需启动:systemd提供了服务按需启动的能力,使得特定的服务只有在真正被请求时才启动,进一步降低了系统资源消耗。
  6. 系统状态与日志管理:systemd能够监视和控制系统状态,记录并管理系统日志,方便管理员查看和调试系统问题。
  7. 其他功能:除了上述功能外,systemd还支持快照和系统恢复、维护挂载点和自动挂载点、管理网络配置、网络时间同步、日志转发和名称解析等任务。此外,它还可以运行容器和虚拟机,并管理电源管理、定时任务等。

总的来说,systemd是一个功能强大且全面的系统初始化系统和服务管理器,它通过提供优秀的框架和强大的功能,使得Linux系统的管理和维护变得更加简单、高效和可靠。

service配置文件字段

unit部分

  • Description:指定当前服务的简单描述。
  • Documentation:指定服务的文档位置,可以是一个或多个文档的URL。
  • After 和 Before:定义服务的启动顺序,表示当前服务应该在哪些服务之后或之前启动。注意,这两个字段只涉及启动顺序,不涉及依赖关系。
  • Wants:表示当前服务与另一个服务之间存在弱依赖关系。如果另一个服务启动失败或停止运行,不影响当前服务继续执行。<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值