Linux systemd

news2025/5/28 1:02:28

这里写目录标题

  • 一:配置文件内容
  • 二:配置文件位置
  • 三:开机启动配置
  • 四:systemctl使用

一:配置文件内容

systemd服务配置文件存放在/usr/lib/systemd目录下,有系统system和用户user之分,需要开机不登录就能运行的程序,放在/usr/lib/systemd/system/目录下,每一个服务以.service结尾,配置文件分为3部分,[Unit]、[Service]、[Install]

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
  1. [Unit]

    字段说明依赖
    After表示服务需要在***服务启动之后执行无依赖
    Before表示服务需要在***服务启动之前执行无依赖
    Wants弱依赖关系
    Requires强依赖关系***停止之后本服务也必须停止
  2. [Service]

    字段说明依赖
    ExecStart启动进程时执行的命令
    ExecReload重启服务时执行的命令
    ExecStop停止服务时执行的命令
    ExecStartPre启动服务之前执行的命令
    ExecStartPost启动服务之后执行的命令
    ExecStopPost停止服务之后执行的命令

    [types]
    | 字段|说明|备注|
    |:-😐 - |
    |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不管是什么退出原因,总是重启
  3. [Install]
    Install区块,定义如何安装这个配置文件,即怎样做到开机启动。
    WantedBy字段:表示该服务所在的 Target。
    Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。
    这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
    Systemd 有默认的启动 Target:

    systemctl get-default
    multi-user.target
    

    上面的结果表示,默认的启动 Target 是multi-user.target。在这个组里的所有服务,都将开机启动。这就是为什么systemctl enable命令能设置开机启动的原因。
    使用target的时候,systemctl list-dependencies命令和systemctl isolate

    #查看 multi-user.target 包含的所有服务
    $ systemctl list-dependencies multi-user.target
    #切换到另一个 target	
    #shutdown.target 就是关机状态
    $ sudo systemctl isolate shutdown.target
    

    一般来说,常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target

二:配置文件位置

/usr/lib/systemd/system
/etc/systemd/system/
/etc/systemd/system/
  1. /usr/lib/systemd/system
  2. /etc/systemd/system/
  3. /etc/systemd/system/

三:开机启动配置

在这里插入图片描述
生成的软链接文件不可以直接拷贝到根文件系统源文件中,但是可以压缩以后再拷贝。

四:systemctl使用

指令说明
systemctl start ssh.service启动sshd服务
systemctl stop ssh.service停止sshd服务
systemctl status ssh.service查看sshd服务状态
systemctl status查看所有服务状态
systemctl restart ssh.service重启sshd服务
systemctl enable ssh.service设置开机自启动
systemctl disable ssh.service禁止开机自启动
systemctl list-units --type=service查看所有已经启动的服务
centered systemctl daemon-reload重新加载配置文件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目跟踪的好处有哪些?项目经理必须了解

项目跟踪要跟踪什么呢?主要针对计划、任务和项目成员三个方面,是为了了解项目的实际进展情况而进行。 在跟踪过程中我们会发现项目计划的不当之处,促使我们去改进和完善计划;发现项目风险,及时解决问题;了…

软件设计之UML用例图大白话教程

1、为什么要使用UML用例图? 对一个复杂问题或者现象的分析,好的方式方法往往能带来事半功倍的效果。比如在软件开发领域,参与的人员角色各种各样,比如软件开发工程师、产品经理、客户、运营人员、老板、用户、B端客户等等&#x…

chatgpt赋能Python-python_kargs

Python中的*kargs:详解 在Python编程中,经常需要为函数传递参数。除了常规的参数传递,Python还支持通过关键字参数传递参数。这种方法比较灵活,可以快速地修改函数的输入参数。其中,kargs是Python中非常常见的一个参数…

管理git项目:003

首先我们得创建一个git管理仓库 进入桌面路径,待会创建的文件可以在桌面找到 cd ..【创建git管理仓库】:创建一个.git 管理仓库, 这个文件被创建后是一个隐藏文件。这个.git文件的作用是:指定当前文件夹作为git管理仓库 git init …

今天,我问了ChatGPT一个难以启齿的问题,内容实录

文 / 高扬(微信公众号:量子论) 七个月前,我是一个害怕失业的漂泊上海的小青年,每天在合租房里刷着LeetCode。 现在我已经在一家人工智能公司从事着自己喜欢的关于机器深度学习的研发工作。 你想知道我的生活发生了什么…

学习git

文章目录 02-为什么要学习Git软件?03 概念:版本控制04 概念:版本控制软件基础功能05 概念:集中式、分布式版本控制系统、多人协作开发5.1 文件冲突问题5.2集中式版本控制(CVS,SVN)5.3 分布式版本…

Word控件Aspose.Words教程:使用 Aspose.在 Java 中对条码使用 ECI 编码

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…

LabVIEWCompactRIO 开发指南30 目标间通信

LabVIEWCompactRIO 开发指南30 目标间通信 可以从两种方法选择在FPGA VI和实时处理机上运行的VI之间传输数据的方法:前面板控制和指示器或DMAFIFO。可以使用前面板控件和指示器来传输最新值或标签以及DMA FIFO,以流式传输数据或发送消息和命令。这两种…

数据存储应用与原理剖析

存储引擎 存储引擎就是存放和读取用户数据的地方,对于持久化的存储引擎而言,数据的归宿是非易失性的存储介质(通俗意义上来说就是磁盘)所以该以什么形式组织和存储数据,这就是存储引擎设计的艺术所在这一块涉及到和操…

【历史上的今天】5 月 23 日:Java 正式发布;晶体管的共同发明者出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 23 日,在 2007 年的今天,盛大宣布出售所持有新浪公司股票,累计获利 7650 万美元。盛大曾于 2005 年 2 月通过公开市场…

Golang-循环变量作用域针对那些数据类型会出现问题

一、原因 在 Go 中,循环变量的作用域是整个 for 循环语句块。因此,循环变量在 for 循环语句块中的代码都是可见的。 但是,当循环变量的值被用于闭包, 协程或者使用指针类型的数据结构时,会出现一些问题。这是因为循环变量的值在…

每日一练 | 网络工程师软考真题 Day8

1、某客户端采用ping命令检测网络连接故障时,发现可以ping通127.0.0.1及本机的IP地址,但无法ping通同一网段内其他工作正常的计算机的IP地址。该客户端的故障可能是 。 A.TCP/IP协议不能正常工作 B.本机网卡不能正常工作 …

80%的人加班都是因为没搞清业务需求:小白如何做好需求调研?

做过项目的都知道,收集和明确需求并非易事,尤其是挖掘需求方详细、深层次的需求。 很多企业在做需求调研时,经常由于双方对问题描述和理解上的差异,使得需求在不断传递的过程中发生较大的偏差,结果导致最终开发出来的…

Head-Free Lightweight Semantic Segmentation with Linear Transformer 新颖的分割网络

现有的语义分割网络基本都是编码解码结构,新的语义分割网络主要都是在解码阶段添加新的不同模块,提高解码阶段特征处理能力,从而实现语义分割。而这篇文章主要是去除了解码阶段,把工作重心放在了编码阶段。它采用并行架构来利用原…

chatgpt赋能Python-python_isdigit_小数

Python isdigit 小数:如何检测字符串是否为数字? 在Python中,字符串是一种非常常见的数据类型。有时我们需要将字符串转换成数字类型,以便于进行各种计算,比如统计数据、计算平均数等等。在这种情况下,我们…

四、Spring从入门到改行

一、Spring概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器&#xff08;框架&#xff09;。 二、Spring基础程序 1、pom.xml中导入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifact…

chatgpt赋能Python-python_ip地址处理

Python IP地址处理 在网络通信中&#xff0c;IP地址是非常重要的内容。Python作为一门强大的编程语言&#xff0c;自然也能处理IP地址。本文将介绍Python处理IP地址的方法&#xff0c;并提供一些实用的例子。 IP地址的表示方式 IP地址是一个32位的二进制数&#xff0c;通常表…

chatgpt赋能Python-python_if_跳过

Python中if语句的跳过和应用 Python的if语句是编程中常用的一条条件语句&#xff0c;它允许开发者根据不同的情况&#xff0c;对代码进行不同的处理。if语句也带来了一些跳过语句&#xff0c;可以有效地帮助开发者避免不必要的操作&#xff0c;提高程序运行效率。本文将介绍Py…

toString 自定义逻辑 过滤 limit ignore 字段 ReflectionToStringBuilder ToStringBuilder

ToStringBuilder 有自己的属性,style, 也有工具方法,直接代理了ReflectionToStringBuilder // ReflectionToStringBuilder 非并发安全,需每次都new ReflectionToStringBuilder reflectionToStringBuilder new ReflectionToStringBuilder(this, org.apache.commons.lang3.build…

2023新版Spring6全新讲解-HelloSpring入门案例

Spring的入门案例 Spring6.0要求的JDK最低版本是17 我们在本课程中使用的版本是5.x版本。这个Spring5的JDK的最低要求是8 一、环境要求 JDK&#xff1a;8 Maven&#xff1a;3.6 Spring:5.3.27 开发工具&#xff1a;IDEA 2021.1.1 二、项目创建 1. 构建项目 在idea中&…