当前位置: 首页 > news >正文

在Ubuntu中使用systemd设置后台自启动服务

引言

在Ubuntu系统中,systemd 是一个非常强大的系统和服务管理器。它不仅负责系统的启动和初始化,还可以帮助我们管理各种后台服务。通过使用 systemd,我们可以轻松地设置服务在系统启动时自动运行,并且能够方便地管理服务的启动、停止和重启等操作。本文将详细介绍如何在Ubuntu中使用 systemd 设置后台自启动服务,并提供一个具体的示例。

一、创建服务文件

首先,我们需要为我们的服务创建一个 systemd 服务文件。服务文件通常位于 /etc/systemd/system/ 目录下,并以 .service 为后缀。假设我们有一个名为 my_service 的Python应用程序,我们希望它在后台运行,并且在系统启动时自动启动。

1. 创建服务文件

打开终端,使用文本编辑器创建一个新的服务文件:

sudo nano /etc/systemd/system/my_service.service

2. 编辑服务文件

在打开的编辑器中,输入以下内容:

[Unit]
Description=My Custom Python Service
After=network.target[Service]
Type=simple
User=username
ExecStart=/usr/bin/python3 /path/to/my_service.py
Restart=on-failure
RestartSec=5s
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my_service[Install]
WantedBy=multi-user.target
  • [Unit] 部分:
    • Description:描述服务的名称和功能,这里我们将其设置为 “My Custom Python Service”。
    • After:指定服务启动的依赖关系。network.target 表示该服务将在网络服务启动之后启动。
  • [Service] 部分:
    • Type:服务启动类型,simple 是默认值,表示服务的启动命令是 ExecStart 指定的命令。
    • User:指定运行服务的用户,替换为你的用户名。
    • ExecStart:指定启动服务的命令,这里使用Python 3来运行 my_service.py
    • Restart:设置服务的重启策略,on-failure 表示如果服务启动失败或崩溃,将自动重启。
    • RestartSec:设置服务重启前的延迟时间,这里设置为5秒。
    • StandardOutputStandardError:指定服务的标准输出和标准错误的处理方式,这里设置为 syslog,表示将输出和错误日志发送到系统日志。
    • SyslogIdentifier:设置日志的标识符,方便在系统日志中查找与该服务相关的日志。
  • [Install] 部分:
    • WantedBy:指定服务应该被哪个目标(target)所包含,multi-user.target 是一个常见的目标,表示多用户文本模式。

3. 保存并退出

保存文件并退出编辑器(在nano中按 Ctrl+X,然后按 Y 确认保存,最后按 Enter)。

二、启动和管理服务

创建并配置好服务文件后,我们需要让 systemd 加载新的服务文件,并启动我们的服务。

1. 重新加载systemd配置

运行以下命令,让 systemd 重新加载所有的配置文件:

sudo systemctl daemon-reload

2. 启动服务

使用以下命令启动服务:

sudo systemctl start my_service.service

3. 查看服务状态

要查看服务的运行状态,可以使用以下命令:

sudo systemctl status my_service.service

这将显示服务的当前状态,包括是否正在运行、启动时间、日志输出等信息。

4. 启用服务自启动

为了让服务在系统启动时自动运行,我们需要启用该服务:

sudo systemctl enable my_service.service

这将创建一个符号链接,将服务文件链接到 /etc/systemd/system/multi-user.target.wants/ 目录下。

5. 停止服务

如果需要停止服务,可以使用以下命令:

sudo systemctl stop my_service.service

6. 重启服务

如果需要重启服务,可以使用以下命令:

sudo systemctl restart my_service.service

7. 查看服务日志

要查看服务的日志信息,可以使用以下命令:

sudo journalctl -u my_service.service

这将显示服务的日志输出,方便我们进行调试和监控。

三、总结

通过以上步骤,我们成功地在Ubuntu系统中使用 systemd 设置了后台自启动服务。systemd 提供了非常灵活和强大的功能,使得服务管理变得更加简单和高效。它不仅能够确保服务在系统启动时自动运行,还能在服务异常时自动重启,极大地提高了服务的稳定性和可靠性。

希望这篇文章能帮助你在Ubuntu系统中更好地管理和部署你的服务。如果你有任何问题或需要进一步的帮助,请随时留言。

相关文章:

在Ubuntu中使用systemd设置后台自启动服务

引言 在Ubuntu系统中,systemd 是一个非常强大的系统和服务管理器。它不仅负责系统的启动和初始化,还可以帮助我们管理各种后台服务。通过使用 systemd,我们可以轻松地设置服务在系统启动时自动运行,并且能够方便地管理服务的启动…...

mongodb清理删除历史数据

批量清理mongodb历史数据 清理程序的原来 目前项目组上很多平台上线历史数据积压,导致入库查询数据缓慢,历史数据有些已经归档,进行历史数据清理删除。 之前临时写shell脚本,太简陋,重新使用Python进行改造&#xff0c…...

C++字体库开发之字体回退策略十六

回退表 { "blocks": [ "UBLOCK_BASIC_LATIN", ], "font": { "family": "Noto Sans SC", "style": [ { "name": "Thin", …...

IO进程day3

一、思维导图 二、作业1 使用C语言编写一个简易的界面,界面如下 1:标准输出流 2:标准错误流 3:文件流 要求:按1的时候,通过printf输出数据,按2的时候,通过perror输出数据&#xff0c…...

【多线程初阶篇¹】线程理解| 线程和进程的区别

目录 一、认识线程Thread 1.为啥引入线程 2.线程理解 🔥 3.面试题:线程和进程的区别 一、认识线程Thread 1.为啥引入线程 为了解决进程太重量的问题 解释(为什么说线程比进程更轻量?/为什么说线程创建/销毁开销比进程小&#…...

wireshark排除私接小路由

1.wireshark打开,发现了可疑地址,合法的地址段DHCP是192.168.100.0段的,打开后查看发现可疑地址段,分别是,192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…...

Docker 从入门到精通

文章目录 Ubuntu 安装Docker步骤前言1. 进入Docker官网,进入开发者页面2. 选择适合自己的安装方式3. 安装 Docker1.更新系统包,安装插件,创建秘钥及目录2.安装 Docker 软件包3.设置开机启动4.通过运行 hello-world 镜像验证安装是否成功 常见…...

uni app 写的 小游戏,文字拼图?文字拼写?不知道叫啥

从下方的偏旁部首中选在1--3个组成上面文章中的文字&#xff0c;完成的文字标红 不喜勿喷 《满江红》 其中用到了两个文件 strdata.json parameters.json 这两个文件太大 放到资源中了 资源文件 <template><view class"wenzi_page_main"><view c…...

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求

一、前言说明 这几个功能是近期定制的功能&#xff0c;也非常具有代表性&#xff0c;核心就是之前登录和设备信息都是在本地&#xff0c;存放在数据库中&#xff0c;数据库可以是本地或者远程的&#xff0c;现在需要改成通过网络API请求的方式&#xff0c;现在很多的服务器很强…...

案例研究:UML用例图中的结账系统

在软件工程和系统分析中&#xff0c;统一建模语言&#xff08;UML&#xff09;用例图是一种强有力的工具&#xff0c;用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究&#xff0c;详细解释UML用例图的关键概念&#xff0c;并说明其在设计结账系统中的应用。 用…...

二叉树的层次遍历

二叉树的层次遍历 描述 给你一个二叉树&#xff0c;请你返回其按 层次遍历 得到的节点值&#xff08;即逐层地&#xff0c;从做到右访问所有节点&#xff09; 代码 通过两个数组来交替打印 class Solution(object):def levelOrder(self, root):if root None:return []sta…...

docker推送本地仓库报错

(base) rootainode3:~# dp 192.168.2.186:5000/bert-deepspeed:latest The push refers to repository [192.168.2.186:5000/bert-deepspeed] Get "http://192.168.2.186:5000/v2/": dial tcp 192.168.2.186:5000: connect: connection refused排查思路如下&#xff…...

Python中的asyncio:高效的异步编程模型

随着互联网应用的快速发展&#xff0c;程序的响应性和处理效率成为衡量系统性能的重要指标。传统的同步编程模型在面对高并发和IO密集型任务时&#xff0c;常常显得捉襟见肘&#xff0c;难以满足现代应用的需求。Python的asyncio库作为一种高效的异步编程模型&#xff0c;为开发…...

Oopsie【hack the box】

Oopsie 解题流程 文件上传 首先开启机器后&#xff0c;我们先使用 nmap -sC -SV来扫描一下IP地址&#xff1a; -sC&#xff1a;使用 Nmap 的默认脚本扫描&#xff08;通常是 NSE 脚本&#xff0c;Nmap Scripting Engine&#xff09;。这个选项会自动执行一系列常见的脚本&am…...

详细介绍 React 中 i18n 的完整使用流程:

接下来按照步骤&#xff0c;让我们来完成&#xff01; // 1. 首先安装必要的依赖 // npm install i18next react-i18next i18next-http-backend i18next-browser-languagedetector// 2. 创建 i18n 配置文件 (src/i18n/index.js) import i18n from i18next import { initReactI…...

部署:上传项目代码 配置数据库

一、上传代码 1、使用git 可以使用Git Clone。使用前&#xff0c;在服务器上也要创建秘钥对。这里的密钥对&#xff0c;是专门用来读取Git仓库的。 在宝塔上&#xff0c;点击终端。进来后&#xff0c;运行 ssh-keygen还是一路回车&#xff0c;密钥对就建好了。 接着用命令…...

C++—9、如何在Microsoft Visual Studio中调试C++

本文通过实例操作来介绍 Visual Studio 调试器的功能。调试器在运行过程中可提供许多方法让你查看代码的情况。 你可以逐步浏览代码、查看变量中存储的值、设置对变量的监视以查看值何时改变、检查代码的执行路径、查看代码分支是否正在运行等等。本实例主要是设置断点及查看内…...

11. C 语言 作用域与变量使用技巧

本章目录: 前言一、作用域的分类局部变量示例&#xff1a; 全局变量示例&#xff1a;示例&#xff1a; 形式参数示例&#xff1a; 二、作用域的细节与常见误区块级作用域示例&#xff1a; 静态变量与全局变量的对比示例&#xff1a; 未初始化变量的影响示例&#xff1a; 三、实…...

【机器学习案列】学生抑郁可视化及预测分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

Perl语言的循环实现

Perl语言的循环实现 引言 Perl是一种强大的脚本语言&#xff0c;以其灵活的语法和强大的文本处理能力著称。无论是在系统管理、网络编程&#xff0c;还是在Web应用开发中&#xff0c;Perl都广泛应用于各种领域。循环是编程语言中一个极其重要的概念&#xff0c;它允许程序重复…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...