systemd

文章目录

  • 运行模式
  • 获取需要开机启动的服务
    • Unit
    • Service
    • Install
  • 添加开机自启程序

  1. 在centos6之前使用上面方式(串)

  2. 在centos7之后(含centos7)使用systemd来管理程序, 通过ls -al /sbin/init 查看链接指向了systemd程序:(并)
    在这里插入图片描述

运行模式

  1. 常见的默认目标包括:

    1. multi-user.target:多用户文本模式,类似于传统的运行级别 3。
    2. graphical.target:图形用户界面模式,类似于传统的运行级别 5。
    3. rescue.target:救援模式,用于系统恢复。
    4. emergency.target:紧急模式,比救援模式更受限。
  2. 确认方式

    1. ls -l /etc/systemd/system/default.target 看软连接到了哪一个文件夹
    2. systemctl get-default 命令查看
  3. 更改默认模式

    1. 使用 systemctl set-default 命令来更改默认启动目标为 multi-user.target

      systemctl set-default  multi-user.target
      

      这条命令会创建一个符号链接 /etc/systemd/system/default.target,指向 /lib/systemd/system/multi-user.target(或类似的路径,具体取决于你的系统配置)。

    2. 验证更改
      再次使用 systemctl get-default 命令来验证默认启动目标是否已成功更改。

      systemctl get-default
      

      这次应该返回 multi-user.target

获取需要开机启动的服务

  1. multi-user模式为例,系统进入/etc/systemd/system/multi-user.target.wants获取所有配置的服务,并启动这些服务
  2. /usr/lib/systemd/[ system | user ]//etc/systemd/[ system | user ]/目录下。user表示用户服务,开机时不启动服务,用户登录后,才触发启动服务;system表示系统服务,开机时启动服务,而不需要用户登录
  3. 服务由三个部分组成: [Unit]、[Service]、[Install],以下通过分章节分别进行介绍

Unit

  1. 描述

    1. Description:systemd使用Description描述服务信息(给读者看的,一般用一个简单的名称短语即可)
    2. Documentation: 指定服务的详细说明文档(地址),多个使用空格进行分隔.
  2. 依赖关系

    1. Requires(强依赖):如果该服务启动失败或异常退出,那么该服务也必须退出
      1. RequiresAny:指定列表中任意一个已经启动即可
      2. PartOf:关联停止和重启,多个用逗号分隔。当被关联的服务停止或启动时,该服务也将随着停止和启动。
      3. BindsTo: 设置绑定服务列表,多个用逗号分隔。绑定列表中的所有服务被启动后,该服务才能被启动;绑定列表中的任一服务停止后,该服务被迫停止。绑定配置只有单向关系,即该服务停止后,不会影响列表中服务的状态。
    2. Wants(弱依赖):如果该服务启动失败或异常退出,不影响该服务,会继续运行
    3. Conflicts: 指定相互冲突的服务,多个使用空格分开。该单元启动时,Conflicts指定的列表中所有单元都将被停止;列表中的某个单元启动时,该单元被停止。
  3. 启动顺序

    1. Before:表示该服务在某一个服务之前启动
    2. After:某一个服务之后

Service

  1. 启动命令
    1. ExecStart:启动服务执行的命令
    2. ExecStop:停止服务执行的命令
    3. ExecReload:重启服务执行的命令
    4. ExecStartPre:启动服务执行的命令
    5. ExecStartPost:启动服务执行的命令
    6. ExecStopPost:停止服务执行的命令
    7. EnvironmentFile:指定当前服务的环境参数文件(路径),如 EnviromentFile=-/etc/sysconfig/xxx,连词号表示抑制错误,即发生错误时,不影响其他命令的执行。
    8. Environment:后面接多个不同的 shell 变量,如 Environment=DATA_DIR=/dir/data。
    9. User:设置服务运行的用户。
    10. Group:设置服务运行的用户组。
    11. WorkingDirectory:设置服务运行的路径
  2. 启动类型
    1. Type:字段定义启动类型
      1. simple(默认):启动的进程为主进程,即直接启动服务进程
      2. forking:以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程(例如用 shell 脚本启动服务进程)
      3. oneshot:只执行一次,systemd 会等它执行完,才启动其他服务
      4. dbus:会等待 D-Bus 信号后启动
      5. notify:启动结束后会发出通知信号,然后 systemd 再启动其他服务
      6. idle:但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
    2. RemainAfterExit:设为 yes,表示进程退出以后,服务仍然保持执行
  3. 重启行为
    1. KillMode:定义 systemd 如何停止服务,可以设置的值如下
      1. control-group(默认):当前控制组里面的所有子进程,都会被杀掉
      2. process:只杀主进程
      3. mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
      4. none:没有进程会被杀掉,只是执行服务的 stop 命令
    2. Restart:定义了服务退出后,Systemd 的重启方式,可以设置的值如下(对于守护进程,推荐设为 on-failure,对于那些允许发生错误退出的服务,可以设为 on-abnormal):
      1. no:退出后不会重启
      2. on-success:只有正常退出时(退出状态码为0),才会重启
      3. on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
      4. on-abnormal:只有被信号终止和超时,才会重启
      5. on-abort:只有在收到没有捕捉到的信号终止时,才会重启
      6. on-watchdog:超时退出,才会重启
      7. always:不管是什么退出原因,总是重启
    3. RestartSec:表示 systemd 重启服务之前,需要等待的秒数

Install

  1. Alias:空格分隔 Unit 附加名称列表,大多数命令(不包括 “systemctl”、“systemctl enable”)可以使用别名而不是实际的 Unit 名称
  2. WantedBy:表示该服务所在的 Target。
  3. Also:指定用户运行 “systemctl enable”、“systemctl disable” 时,要与 Unit 一起 “启用” 或 “禁用” 的 Unit 列表

添加开机自启程序

  1. 在 /lib/systemd/system/ 文件中添加 xwtime.service

    1. [Unit]
      Description=/root/timexw Compatibility
      Documentation=man:systemd-rc-local-generator(8)
      ConditionFileIsExecutable=/root/timexw
      #After=network.target
      After=local-fs-pre.target
      #Aftee=sysinit.target
      #Before=sysinit.target
      
      [Service]
      Type=forking
      ExecStart=/root/timexw
      TimeoutSec=0
      RemainAfterExit=yes
      GuessMainPID=no
      
      [Install]
      WantedBy=multi-user.target
      
  2. 在 /etc/systemd/system 下运行命令 systemctl enable xwtime.service 添加自启

  3. 服务运行顺序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915158.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 热题100之技巧关卡

1.只出现一次的数字 思路分析1:使用哈希表存储每个数字和该数字出现的次数。遍历数组即可得到每个数字出现的次数,并更新哈希表,最后遍历哈希表,得到只出现一次的数字。 具体实现代码(详解版):…

如何优化Kafka消费者的性能

要优化 Kafka 消费者性能,你可以考虑以下策略: 并行消费:通过增加消费者组中的消费者数量来并行处理更多的消息,从而提升消费速度。 批量消费:配置 fetch.min.bytes 和 fetch.max.wait.ms 参数来控制批量消费的大小和…

服务器数据恢复——Ext4文件系统使用fsck后mount不上的数据恢复案例

关于Ext4文件系统的几个概念: 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组结构基本上相同。 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述…

GIC寄存器介绍

往期内容 本专栏往期内容,interrtupr子系统: 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…

并发基础:(淘宝笔试题)三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC....”的字符串【举一反三】

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。 💡 无论你是刚刚踏…

vue计算属性 初步使用案例

<template><div><h1>购物车</h1><div v-for"item in filteredItems" :key"item.id"><p>{{ item.name }} - {{ item.price }} 元</p><input type"number" v-model.number"item.quantity"…

springboot读取modbus数据

1、引入依赖 jlibmodbus <dependency><groupId>com.intelligt.modbus</groupId><artifactId>jlibmodbus</artifactId><version>1.2.9.7</version> </dependency> 2、数据获取 public String processData(String ip) {tr…

【0x0045】HCI_Write_Inquiry_Mode详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Write_Inquiry_Mode命令格式 2.2. Inquiry_Mode 三、响应事件格式及参数 3.1. HCI_Command_Complete事件格式 3.2. 参数说明 3.2.1. 事件代码(Event Code) 3.2.2. 参数总长度(Parameter Total Length) 3.2.3.…

【C语言】指针的运算

指针的增量操作&#xff1a; int i 10; int *p &i;printf("p %p\n", p);//1024p; // 增加int 4个字节大小printf("p %p\n", p);//1028指针的增量运算取决于指针的数据类型&#xff0c;它将会增加数据类型的大小的字节。 指针的减量操作与增量同理…

电商系统开发:Spring Boot框架实战

3 系统分析 当用户确定开发一款程序时&#xff0c;是需要遵循下面的顺序进行工作&#xff0c;概括为&#xff1a;系统分析–>系统设计–>系统开发–>系统测试&#xff0c;无论这个过程是否有变更或者迭代&#xff0c;都是按照这样的顺序开展工作的。系统分析就是分析系…

【数据库】数据库迁移的注意事项有哪些?

数据库迁移是一个复杂且关键的过程&#xff0c;需要谨慎处理以确保数据的完整性和应用程序的正常运行。以下是一些数据库迁移时需要注意的事项&#xff1a; 1. 充分的前期准备 1.1 评估迁移需求 明确目标&#xff1a;确定迁移的具体目标&#xff0c;例如添加新字段、修改现…

pgsql和mysql的自增主键差异

1. 当有历史数据存在时&#xff0c; mysql的自增主键是默认从最大值自增。 pgsql的自增主键取初始值开始逐个尝试&#xff0c;所以存在可能与历史数据的主键重复的情况。 pgsql解决上述问题的方式&#xff1a;重设自增值。 SELECT SETVAL(t_db_filed_id_seq, (SELECT MAX(&q…

opencv入门学习总结

opencv学习总结 不多bb&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; 案例一&#xff1a; import cv2 # 返回当前安装的 OpenCV 库的版本信息 并且是字符串格式 print(cv2.getVersionString()) """ 作用&#xff1a;它可以读取不同格式的图像文…

【VBA实战】用Excel制作排序算法动画续

为什么会产生用excel来制作排序算法动画的念头&#xff0c;参见【VBA实战】用Excel制作排序算法动画一文。这篇文章贴出我所制作的所有排序算法动画效果和源码&#xff0c;供大家参考。 冒泡排序&#xff1a; 插入排序&#xff1a; 选择排序&#xff1a; 快速排序&#xff1a;…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言&#xff0c;简称Golang&#xff0c;是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计&#xff0c;并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标&#xff0c;…

《基于深度学习的车辆行驶三维环境双目感知方法研究》

复原论文思路&#xff1a; 《基于深度学习的车辆行驶三维环境双目感知方法研究》 1、双目测距的原理 按照上述公式算的话&#xff0c;求d的话&#xff0c;只和xl-xr有关系&#xff0c;这样一来&#xff0c;是不是只要两张图像上一个测试点的像素位置确定&#xff0c;对应的深…

机器学习在医疗健康领域的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 机器学习在医疗健康领域的应用 机器学习在医疗健康领域的应用 机器学习在医疗健康领域的应用 引言 机器学习概述 定义与原理 发展…

2024136读书笔记|《飞鸟集》——使生如夏花之绚烂,死如秋叶之静美

2024136读书笔记|《飞鸟集》——使生如夏花之绚烂&#xff0c;死如秋叶之静美 《飞鸟集》[印]泰戈尔&#xff0c;一本有意思的诗集&#xff0c;中英文对照着读更有意思。“你是谁&#xff0c;读者&#xff0c;百年后读着我的诗&#xff1f;”让我觉得有些久别重逢&#xff0c;忽…

爱芯元智创始人仇肖莘荣获《财富》中国最具影响力的商界女性

爱芯元智宣布&#xff0c;《财富》&#xff08;中文版&#xff09;揭晓了2024年度“中国最具影响力的商界女性”榜单&#xff08;Most Powerful Women&#xff0c;简称MPW&#xff09;&#xff0c;爱芯元智创始人兼董事长仇肖莘博士荣登《财富》“MPW未来榜”&#xff0c;彰显了…

windows下qt5.12.11使用ODBC远程连接mysql数据库

1、下载并安装mysql驱动,下载地址:https://dev.mysql.com/downloads/ 2、配置ODBC数据源,打开64位的ODBC数据源配置工具: