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

ops/2025/1/11 22:49:46/

引言

在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系统中更好地管理和部署你的服务。如果你有任何问题或需要进一步的帮助,请随时留言。


http://www.ppmy.cn/ops/149271.html

相关文章

python实现自动登录12306抢票 -- selenium

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码,但是都不是最新的,我也是从网上找别人的帖子,看B站视频&…

HTTPS协议的基础与工作原理

什么是HTTPS? HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本,它通过SSL/TLS协议对通信数据进行加密,确保数据的安全传输。与HTTP相比,HTTPS能防止数据被窃取、篡改或伪造,广…

基于微信小程序的水果销售系统的设计与实现springboot+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…

文件上传漏洞 (网络安全)

文件上传漏洞(File Upload Vulnerability)是一种常见的安全漏洞,发生在允许用户上传文件的应用程序中。如果系统没有适当验证用户上传文件的类型、内容或权限,就可能允许攻击者上传恶意文件,这些文件能够在目标服务器上…

如何在 Ubuntu 22.04 上安装和配置邮件服务器教程

简介: 在本指南中,我们将演示如何在 Ubuntu 22.04 上安装和配置邮件服务器,因为大中型公司可以从拥有私人邮件服务器中获益匪浅。通过使用邮件服务器,可以密切监视所有电子邮件流量。此外,自定义设置的灵活性使得建立…

Halcon在linux及ARM上的安装及c++工程化

一、HALCON下载 建议到HALCON官方下载页选择linux版本下载,压缩包名为MVTec_HALCON_Progress-18.11.0.1-linux(x64-aarch64-armv7a)-FullVersion.tar.gz。下载前需要登录HALCON帐号,如果没有请自行注册,填写一些基本信息然后激活邮件,操作方便简易。 下载许可证文件 该许…

linux相关conda操作

如果你想安装完整的 Anaconda(而不是 Miniconda),Anaconda 是一个包含大量预安装科学计算包的发行版,适合数据科学和机器学习等领域。以下是详细的安装步骤和相关操作: 1. 安装 Anaconda 1.1 下载 Anaconda 安装脚本 …

ChatGPT如何赋能办公

课程背景: ChatGPT近来非常火爆,但多数课程偏重于理论,我们本次讲座将以亲身实践为例,分享如何快速赋能办公,并立刻提升生产力。 课程梗概: 本课程旨在探究ChatGPT在办公中的应用。通过案例分析、课堂讨…