systemd服务管理详解(将部署的服务注册为系统服务)

一、概述

systemd是一个系统和服务管理器,systemd是Linux系统中一套基本的构建模块,提供了一系列工具的集合,用于管理后台服务、状态查询、日志归档、设备管理、电源管理和定时任务等许多职责。

systemd作为PID为1的进程,是系统中所有其他进程的父进程。

systemctl是一个命令行工具,用于与systemd进行交互。通过systemctl,用户可以启动、停止、重启、查看状态以及管理系统中的服务单元

systemd作为后台服务运行,而systemctl则提供了用户与systemd交互的接口。用户通过systemctl发送指令,systemd执行相应的操作

systemctl的命令实际上是向systemd发送请求,告诉systemd要做什么。

systemd通过单元文件(Unit files)来描述和管理不同的系统资源和服务。Systemd 支持的 12 种 Unit 文件类型。下面就将我们生产环境中常用到的Service单元文件展开讲解。

二、service文件

定义软件服务的文件通常是systemd服务单元文件,具有.service后缀,这些文件通常位于以下目录

# 系统或用户自定义的配置文件
/etc/systemd/system/
# 软件运行时生成的配置文件
/run/systemd/system
# 系统或第三方软件安装时添加的配置文件。
/usr/lib/systemd/system

Systemd 默认从目录 /etc/systemd/system/ 读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录 /usr/lib/systemd/system/,真正的配置文件存放在那个目录。

1、service组成部分

service文件主要三大模块

[Unit]:定义与Unit类型无关的通用选项,用于提供unit的描述信息、unit行为及依赖关系等[Service]:定义如何启动、停止、重启当前服务。[Install]:定义如何安装这个配置文件,即怎样做到开机启动。

2 Unit部分

Description:    # 对服务的简单描述
After:      # 在哪些服务之后启动
Before:     # 在哪些服务器启动之前启动
Requires:    # 可以指定服务依赖于哪些服务(强依赖)
Wants:     # 可以指定服务依赖于哪些服务(弱依赖)

3、Service部分

EnvironmentFile:  指定当前服务启动的环境变量
ExecStart:  指定服务启动时执行的命令或脚本
ExecStop:    指明停止服务要运行的命令或脚本
RestartSec:    指定服务在重启时等待的时间,单位为秒
ExecReload:    指明重启服务要运行的命令或脚本
Restart:     重启设置
KillMode:    指定停止的方式
Restart:    指定重启时的类型
Type:     指定启动类型,
type的可选值
simple  指定ExecStart字段的进程为主进程
forking  指定以fork() 子进程执行ExecStart字段的进程
oneshot  执行一次
notify  启动后发送会发送通知信号通知systemd
idle  等其他任务结束后才运行
Restart的可选值
no:    退出后不会重启
on-success:    当进程正常退出时(退出码为0) 执行重启
on-failure:    当进程不正常退出时(退出码不为0) 执行重启
on-abnormal:   当被信号终止和超时执行重启on-abort:      当收到没有捕捉到的信号终止时执行重启
on-watchdog:   当看门狗超时时执行重启
always:        一直重启
KillMode可选值
control-group:   杀掉当前进程中所有的进程
process:      杀掉当前进程的主进程
mixed:    主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none:    不杀掉任何进程

4、Install部分

Alias:    别名,可使用systemctl command Alias.service
RequiredBy:   被哪些units所依赖,强依赖
WantedBy:   被哪些units所依赖,弱依赖
Also:   安装本服务的时候还要安装别的相关服务
Install:  一般填为WantedBy=multi-user.target

三、service文件样例

将自己部署的nginx注册为系统服务
[Unit]Description=The nginx web and reverse proxy server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
#启动检测命令
ExecStartPre=/data/nginx/sbin/nginx -t
#启动命令
ExecStart=/data/nginx/sbin/nginx -c /data/nginx/conf/nginx.conf
#重载配置文件命令
ExecReload=/data/nginx/sbin/nginx -s reload
#停止命令
ExecStop=/data/nginx/sbin/nginx -s quit[Install]
WantedBy=multi-user.target
将部署的mysql注册为系统服务
[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target [Service]
Type=forking
#指定PID文件
PIDFile=/data/mysql/data/centos-linux.shared.pid
#启动MySQL
ExecStart=/data/mysql/support-files/mysql.server start
#重载
ExecReload=/bin/kill -s HUP $MAINPID
#停止服务
ExecStop=/data/mysql/support-files/mysql.server 
stopPrivateTmp=false 
[Install]
WantedBy=multi-user.target

四、systemctl命令合集

#启动服务
systemctl start name.service
#停止服务
systemctl stop name.service
#重启服务
systemctl restart name.service
#查看服务状态
systemctl status name.service
#禁止自动和手动启动
systemctl mask name.service
#取消禁止
systemctl unmask name.service
#查看某服务当前激活与否的状态
systemctl is-active name.service
#查看所有已经激活的服务
systemctl list-units --type|-t service
#查看所有服务
systemctl list-units --type service --all
#设定某服务开机自启,相当于chkconfig name on
systemctl enable name.service
#设定某服务开机禁止启动:相当于chkconfig name off
systemctl disable name.service
#查看所有服务的开机自启状态,相当于chkconfig --list
systemctl list-unit-files --type service
#用来列出该服务在哪些运行级别下启用和禁用:chkconfig –list namels /etc/systemd/system/*.wants/name.service
#查看服务是否开机自启
systemctl is-enabled name.service
#列出失败的服务
systemctl --failed --type=service
#查看服务的依赖关系
systemctl list-dependencies name.service
#杀掉进程
systemctl kill unitname
#重新加载配置文件
systemctl daemon-reload
#关机
systemctl halt
#重启服务器
systemctl reboot

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

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

相关文章

小程序 - 比较数字大小

小程序交互练习 - 比较数字大小的小程序 目录 比较数字大小 功能描述 准备工作 页面内容 设置页面事件 页面绑定事件 比较大小 按钮绑定事件 比较事件 设置结果显示 页面样式 功能截图 总结 比较数字大小 本案例将实现“比较数字大小”微信小程序,它的…

grpc与rpcx的区别

什么是微服务?微服务的主要区别rpcx与grpc的区别rpcx:grpc:为什么grpc要使用http2,为什么不适应http1或者http3?为什么grpc要使用proto而不是json或者其他数据格式? 为什么rpcx快,快多少?rpcx的具体性能指标与grpc比较: 什么是微服务? 整体功能通过多个程序实现,每个程序…

数据集搜集器(百科)008

对数据集搜集器(百科)007进行一下改进: 错误处理:增加更多的错误处理,比如网络请求超时、解析错误等。 用户界面:增加一些提示信息,让用户更清楚当前的操作状态。 多线程处理:确保多…

windows下用mysqld启动免安装mysql

windows系统可以下载免安装版本,就是绿色版,里面包含mysql运行的所有必要条件。 ![[Pasted image 20241128231459.png]] 启动步骤: 解压,然后在解压目录创建my.ini。 [mysqld] # 设置13306端口 port13306# 设置mysql的安装目录…

学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P15 ~ P16)

概述 《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,他旨在提升开发效率和代码质量 《Java 开发手册》是一本极具价值的 Java 开发规范指南,对于提升开发者的综合素质和代码质量具有重要意义 学习《Java 开发手册》是一个提升 Jav…

windows安装itop

本文介绍 win10 安装 itop 安装WAMP集成环境前 先安装visual c 安装itop前需要安装WAMP集成环境(windowsApacheMysqlPHP) 所需文件百度云盘 通过网盘分享的文件:itop.zip 链接: https://pan.baidu.com/s/1D5HrKdbyEaYBZ8_IebDQxQ 提取码: m9fh 步骤一&#xff1…

Leetcode - 周赛425

目录 一,3364. 最小正和子数组 二, 3365. 重排子字符串以形成目标字符串 三,3366. 最小数组和 四,3367. 移除边之后的权重最大和 一,3364. 最小正和子数组 本题可以直接暴力枚举,代码如下: …

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…

Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

创建HDL兼容的Simulink模型 一、使用Balnk DUT模板二、从HDL Coder库中选择模块三、为DUT开发算法/功能四、为设计创建Testbench五、仿真验证设计功能六、Simulink模型生成HDL代码 这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法…

【VUE3】【Naive UI】<NCard> 标签

【Vue3】【Naive UI】 标签 title 属性bordered 属性header-style 和 body-style 属性footer 属性actions 属性hoverable 属性loading 属性size 属性type 属性cover 和 avatar 属性description 属性style 属性 【VUE3】【Naive UI】<NCard> 标签 【VUE3】…

Python小白语法基础20(模块与包)

0) 参考文章 python的模块(module)、包(package)及pip_python package-CSDN博客Python之函数、模块、包库_python函数、模块和包-CSDN博客Python函数模块自定义封装及模块嵌套导入(手把手教程)_python如何封装一个模块-CSDN博客 1) 模块与包说明 软件…

选择排序之大根堆

大根堆:树的根节点大于左右子树的结点值,这样就能保证每次从树根取的是最大值 灵魂在于HeadAdjust函数,以某节点为树根通过下落调整为大根堆, 建树思想 就是,从最后一个非终端结点开始调整以该结点为根的子树&#x…

springboot/ssm旅游民宿信息管理系统Java旅游景点管理系统web旅游源码

springboot/ssm旅游民宿信息管理系统Java旅游景点管理系统web旅游源码 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…

mfc110u.dll是什么意思,mfc110u.dll丢失解决方法大全详解

mfc110u.dll是Microsoft Foundation Classes (MFC)库的一个特定版本(版本11.0)的Unicode动态链接库文件。MFC是Microsoft为C开发者设计的一个应用程序框架,主要用于简化Windows应用程序的开发工作。这个框架封装了很多Windows API函数&#x…

smb cifs samba smbpasswd 笔记241127

smb cifs samba smbpasswd 笔记241127 SMB、CIFS和Samba都是与文件共享相关的技术,它们在不同的层面上发挥着作用。以下是关于SMB、CIFS和Samba的详细解释: SMB(Server Message Block) 定义:SMB(Server …

debian 11 虚拟机环境搭建过坑记录

目录 安装过程系统配置修改 sudoers 文件网络配置换源安装桌面mount nfs 挂载安装复制功能tab 无法补全其他安装 软件配置eclipse 配置git 配置老虚拟机硬盘挂载 参考 原来去 debian 官网下载了一个最新的 debian 12,安装后出现包依赖问题,搞了半天&…

JAVAWeb之CSS学习

前引 CSS,层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有网页对象和模型样式编辑的能力,简单来说,美化页面。…

全排列内存对齐

46. 全排列 class Solution { public:vector<int> vis;//标记数组vector<int> mid;//中间数组vector<vector<int>> ans;//答案二维数组//dfs搜索和回溯求全排列void dfs(vector<int>& nums,int depth) {if (depth nums.size()) {ans.push_…

从单机缓存到分布式缓存那些事

作者&#xff1a;秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义&#xff0c;用于电脑工程领域。当时没有 Cache&#xff0c;CPU 和内存都很慢&#xff0c;CPU 直接访…

macos下brew安装redis

首先确保已安装brew&#xff0c;接下来搜索资源&#xff0c;在终端输入如下命令&#xff1a; brew search redis 演示如下&#xff1a; 如上看到有redis资源&#xff0c;下面进行安装&#xff0c;执行下面的命令&#xff1a; brew install redis 演示效果如下&#xff1a; …