Ubuntu服务设置

0. systemd介绍

Linux系统的systemd是第一个运行的进程,用来创建系统的守护进程,管理整个Linux系统。systemd支持并行启动守护进程,systemd初始化整个系统所需的资源。

0.1 systemd基本命令

  1. systemctl
    systemctl是systemd中最基本的命令,用于管理系统。常见基础用法如下。
sudo systemctl reboot   # 重启系统
sudo systemctl poweroff  # 关闭系统
sudo systemctl halt      # CPU 停止工作
sudo systemctl suspend   # 暂停系统
  1. systemd-analyze
    systemd-analyze用于分析系统启动守护进程所耗费的时间。

0.2 Unit

systemd可以管理系统资源,不同的资源统称为Unit。
资源unit总共有12种:

  • service:系统服务
  • target:多个unit构成的一个组

当systemd需要管理多个units,可以通过target来帮助系统大量启动unit。target本质是一个unit组,包含了unit。
启动某个target时,systemd会启动里面所有的uint。
systemd启动的第一个target为default.target,本质是一个软连接执行multi-user.target或者graphical.target

  • mount:文件系统挂载点
  • automount:自动挂载点
  • path:文件或路径
  • scope:不是有systemd启动的外部进程
  • slice:进程组
  • socket:进程间通信的socket
  • swap:swap文件
  • timer:定时器
  • device:硬件设备
    unit常见管理命令如下:
systemctl start unit
systemctl stop unit
systemctl restart unit
systemctl reload unit (重新加载unit的配置文件)
systemctl kill unit (杀死unit的所有进程)
systemctl daemon-reload(重新加载所有修改过的配置文件)

1. unit配置文件

每一个unit都有一个配置文件,告诉ystemd如何启动该unit.
systemd默认从目录/etc/systemd/system/中读取配置文件。但是该目录下大部分文件都是符号链接,真正的配置文件存放在/lib/systemd/system目录下
在这里插入图片描述

  • unit组
    [Unit]区块用来定义Unit的内容,配置于其他Unit的依赖、启动顺序关系。

Description:简短描述作用 Documentation:文档地址
Requiers:当前unit依赖的其他unit,如果它们没有运行,当前unit会启动失败 Wants:与当前 Unit 配合的其他
Unit,如果它们没有运行,当前 Unit 不会启动失败 BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前
Unit 停止运行 Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动 After:如果该字段指定的
Unit 也要启动,那么必须在当前 Unit 之前启动

  • [Service]区块

Type:定义启动时的进程行为。它有以下几种值。

Type=simple:默认值,执行ExecStart指定的命令,启动主进程 Type=forking:以 fork
方式从父进程创建子进程,创建后父进程会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
Type=idle:若有其他任务执行完毕,当前服务才会运行

ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令
ExecStartPost:启动当前服务之后执行的命令 ExecReload:重启当前服务时执行的命令
ExecStop:停止当前服务时执行的命令 ExecStopPost:停止当其服务之后执行的命令
RestartSec:自动重启当前服务间隔的秒数 Restart:定义何种情况 Systemd
会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数 Environment:指定环境变量
RemainAfterExit:unit的进程退出后,unit资源保留下来 TimeoutStartSec
启动服务时的等待的秒数,如果超过这个时间服务任然没有执行完所有的启动命令,则 systemd 会认为服务自动失败。这一配置对于使用
Docker 容器托管的应用十分重要,由于 Docker 第一次运行时可以能会需要从网络下载服务的镜像文件,因此造成比较严重的延时,容易被
systemd 误判为启动失败而杀死。通常对于这种服务,需要将 TimeoutStartSec 的值指定为 0,从而关闭超时检测,如前面的第二个例子。

  • [Install]区块:定义如何启动,以及是否开机启动

WantedBy:它的值是一个或多个 Target,当前 Unit
激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
RequiredBy:它的值是一个或多个 Target,当前 Unit
激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Alias:当前 Unit 可用于启动的别名 Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit

2. 开机自启动

在[Install]区块中,定义了是否开机启动。为了能够使得服务开机自启动,需要执行如下命令激活服务

$ systemctl enable rot13

同样可以通过如下命令disable服务,取消开机自启动

$ systemctl disable rot13

3. 服务自动重启

在[Service]区块中,可以通过设置restart相关参数,使得服务自动重启

4. 查看服务状态

可以通过journalctl工具查看指定服务的输出,-u用来指定服务名称,-f指定实时输出

sudo journalctl -n -f -u baoshen.service

总结

在ubuntu中,对于开发者开发的应用想要以服务的形式开机重启,可以通过本文章找到相应的答案。本文介绍了ubuntu下服务的各种操作以及每个组区块的各种含义。

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

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

相关文章

[Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解

一. 创建k8s部署的镜像 1.部署nodejs项目 (1).上传nodejs项目到节点node1 (2).压缩nodejs项目 (3).构建nodejsDockerfile 1).创建nodejsDockerfile 具体可参考:[Docker]十.Docker Swarm讲解,在/root下创建nodejsDockerfile,具体代码如下: FROM node #把压缩文件COPY到镜像的…

运筹学经典问题(七):旅行商问题(TSP)

问题描述 给定一系列城市和每对城市之间的距离,求解访问每座城市一次并回到起始城市的最短回路。 数学建模 集合: V V V:城市集合 常量: c i j c_{ij} cij​:城市 i i i到城市 j j j之间距离, i ≠ j i \neq j i…

WPF仿网易云搭建笔记(6):Style进阶详解

文章目录 专栏和Gitee仓库前言Style简单使用样式字典全局样式局部全局样式全局样式穿透 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 WPF想要批量设置样式属性,一共有3个方法 Style样式Template控件模板DataTemplate数据模板 WPF 零基础…

每日一题2023.12.14|LeetCode3.无重复字符的最长子串

leetcode3.无重复字符的最长字串 连接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 滑动窗口 找出字符串中不含重复字符的最长子串,由于最长子串是连续的,所以可以利用滑动窗口来做。窗口内的字符都是…

小区生活污水处理设备生产厂家讲解

小区生活污水处理设备生产厂家讲解 工艺流程讲解 1.进水井 进水井在处理系统中起到关键作用。它设置了溢流口和进水闸门,当来水量超过系统负荷或者系统发生故障时,可以关闭进水闸门,以防止污水直接进入河道或市政管网。这一步骤确保了系统的稳…

Windows下ping IP+端口的方法

有两种方法: 1. windows 开通 telnet 参考: https://zhuanlan.zhihu.com/p/570982111 2. 安装插件 参考:Windows下ping IP端口的方法 推荐使用第二种。

JVM-接口响应时间很长解决办法

问题 在程序运行过程中,发现有几个接口的响应时间特别长,需要快速定位到是哪一个方法的代码执行过程中出现了性能问题。 解决思路 已经确定是某个接口性能出现了问题,但是由于方法嵌套比较深,需要借助于算法定位到具体的方法。 A…

linux脚本中 #!/bin/sh、#!/bin/bash

我们通常看到的脚本文件总是有以下这样的开头: #!/bin/bash本文解释一下这是什么,以及为什么要写它。 首先解释一下 #! ,因为 #!有个专有的名词,叫 shebang 发音类似中文的 “蛇棒” 。为什么叫 shebang 呢? 首先 #…

综合实验:期末

实验要求: 一.物理连接 实验分2个组进行,使用思科模拟软件。每个同学模拟两个组。每个组选用一台路由器、一台三层交换机和一台二层交换机。要求按下图拓扑进行连接。如下图:最上端设备为核心交换机,按老师要求配置&a…

C# WPF上位机开发(动态添加控件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 写图形界面软件的时候,我们经常会遇到一种情况。那就是图形界面上面,显示的控件可能是不定的。有可能多,也有可…

量子计算对密码学的威胁及应对方式

PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 当量子计算机问世时,许多加密方式将慢慢失去效果。本文将阐述原因以及正在研究的后量子密码学,以帮助人们…

Unity | Shader基础知识(第五集:案例<小彩球>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、原理分析 1 现实中出现彩色的原因 2 软件里的彩色的原理 3 方案 三、 实现数字由【-1,1】映射为【0,1】 1 结论 2 原理 四、代码实现 1 注意事项 2 详解结构体appdata_base 3 接收数据 4 映射数据 5 输出给SV_TAR…

天猫数据平台-淘宝天猫数据-天猫销售数据分析:11月天猫平台滑雪运动装备行业销量翻倍!

随着天气变冷、冬季来临,迎来了疫情后的首个滑雪季,加之自冬奥会结束以来,大众参与冰雪运动的热度持续攀升,因此,冰雪运动的需求正集中释放。 根据相关数据显示,11月以来,全国滑雪场门票预订量较…

阿里云人工智能平台PAI多篇论文入选EMNLP 2023

近期,阿里云人工智能平台PAI主导的多篇论文在EMNLP2023上入选。EMNLP是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究,尤其重视自然语言处理的实证研究。该会议曾推动了预训练语言模型、文本挖掘、…

Mac卸载nodejs

随着 JavaScript 的流行和 Web 开发的发展,Node.js 作为 JavaScript 的一种运行环境,也在技术领域中备受关注。然而,在使用 Node.js 开发项目时,有时候需要卸载 Node.js,这时候很多人可能会遇到问题。在 Mac 系统中&am…

在项目中,使用drawio创建一个共享协作看板

在项目中,使用drawio创建一个共享协作看板 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…

LSTM和GRU的介绍以及Pytorch源码解析

介绍一下LSTM模型的结构以及源码,用作自己复习的材料。 LSTM模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 上次上一篇文章介绍了RNN序列模型,但是RNN模型存在比较严重的梯度爆炸和梯度消失问题。 本文…

QT-CAD-3D显示操作工具

QT-CAD-3D显示操作工具 一、效果展示二、核心程序三、程序链接 一、效果展示 二、核心程序 TDF_LabelSequence DxfReader::transfer(DocumentPtr doc, TaskProgress* progress) {TDF_LabelSequence seqLabel;Handle_XCAFDoc_ShapeTool shapeTool doc->xcaf().shapeTool();…

大数据技术13:HBase分布式列式数据库

前言:2007年Powerset的工作人员,通过google的论文开发出了BigTable的java版本,即HBASE。2008年HBASE贡献给了Apache。HBase 需要依赖 JDK 环境。 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想…

微服务学习:Gateway服务网关

一,Gateway服务网关的作用: 路由请求:Gateway服务网关可以根据请求的URL或其他标识符将请求路由到特定的微服务。 负载均衡:Gateway服务网关可以通过负载均衡算法分配请求到多个实例中,从而平衡各个微服务的负载压力。…