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

在Ubuntu系统中使用Systemctl添加启动项的详细指南

在Ubuntu系统中使用Systemctl添加启动项的详细指南

在Ubuntu系统中,systemctl 是管理systemd服务的主要工具。通过它,你可以添加、启动、停止、重启、启用和禁用服务。

什么是Systemctl?

systemctl 是一个用于管理systemd系统和服务管理器的命令行工具。systemd是一个系统和服务管理器,作为许多Linux发行版的init系统。它提供了并行启动服务,减少启动时间的功能,并能有效管理服务依赖关系。

系统要求

  • Ubuntu系统(本指南适用于Ubuntu 16.04及更高版本)
  • 拥有sudo权限的用户账户

如何使用Systemctl添加启动项

要使用systemctl添加启动项,需要创建一个新的systemd服务单元文件,并将其配置为在系统启动时自动启动。以下是具体步骤:

步骤一:创建服务单元文件

服务单元文件定义了一个服务的行为,包括如何启动、停止和重启服务。服务单元文件通常位于/etc/systemd/system/目录下,文件名以.service结尾。以下是一个服务单元文件的示例:

[Unit]
Description=My Custom Service
After=network.target[Service]
ExecStart=/usr/bin/my_custom_service
Restart=always[Install]
WantedBy=multi-user.target

在服务单元文件中,[Unit]部分包含了服务的描述和依赖关系,[Service]部分定义了服务的启动命令、重启策略等,[Install]部分指定了服务的目标环境。

  • Description:服务的描述。
  • After:指定服务依赖的其他服务,例如network.target表示网络服务。
  • ExecStart:指定服务启动时执行的命令。
  • Restart:定义服务失败时的重启策略,always表示总是重启。
  • WantedBy:指定服务应该在哪个目标下启动,multi-user.target是多用户图形界面环境。

在创建或修改完.service配置文件后,需要重新加载systemd管理的配置文件,以使更改生效。可以使用以下命令重新加载systemd配置:

sudo systemctl daemon-reload

然后,再启用、启动、停止或重启您的服务。

步骤2:启用服务

创建服务文件后,您需要启用该服务以确保它在系统启动时自动启动:

sudo systemctl enable my_service.service

步骤3:启动服务

要立即启动服务(而不是等到下一次系统启动),您可以使用以下命令:

sudo systemctl start my_service.service

步骤4:检查服务状态

要检查服务的状态,您可以使用以下命令:

sudo systemctl status my_service.service

这将显示服务的状态,包括它是否正在运行,以及最近的日志输出。

如果服务运行正常,你将看到类似于以下的输出:

● my_custom_service.service - My Custom ServiceLoaded: loaded (/etc/systemd/system/my_custom_service.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2024-05-20 12:34:56 UTC; 1min 30s agoMain PID: 1234 (my_custom_service)Tasks: 1 (limit: 4915)Memory: 1.1MCGroup: /system.slice/my_custom_service.service└─1234 /usr/bin/my_custom_service

步骤5:重启和停止服务

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

sudo systemctl restart my_service.service
sudo systemctl stop my_service.service

参考链接

  • Systemd 入门:链接地址
  • Ubuntu 官方文档:链接地址
  • Systemctl 手册页:链接地址
  • 编写自定义Systemd服务:链接地址

在这里插入图片描述

相关文章:

  • Mybatis入门——其他查询操作和数据库连接池(4)
  • 【oracle】Oracle RAC中的GNS到底是什么?
  • ctfshow web入门 黑盒测试
  • linux input 驱动
  • 持续总结中!2024年面试必问 20 道 Rocket MQ面试题(二)
  • 语言模型的发展
  • 磁盘管理以及文件系统08
  • Python二叉树遍历算法
  • 防御恶意爬虫攻击
  • 学习Java的日子 Day49 函数,DOM
  • aws glue配置读取本地kafka数据源
  • 【Linux】关于获取进程退出状态中的core dump标志补充
  • Google Earth Engine(GEE)深度学习入门教程-Python数据读入篇
  • npm build报错Cannot find module ‘html-webpack-plugin‘解决方法
  • 设计模式—23种设计模式重点 表格梳理
  • Centos6.8 使用rpm安装mysql5.7
  • chrome扩展demo1-小时钟
  • JavaScript 一些 DOM 的知识点
  • LeetCode29.两数相除 JavaScript
  • Nodejs和JavaWeb协助开发
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 简单实现一个textarea自适应高度
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 什么是Javascript函数节流?
  • 使用Swoole加速Laravel(正式环境中)
  • 探索 JS 中的模块化
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • puppet连载22:define用法
  • 阿里云API、SDK和CLI应用实践方案
  • ​Redis 实现计数器和限速器的
  • ​数据结构之初始二叉树(3)
  • #stm32整理(一)flash读写
  • (007)XHTML文档之标题——h1~h6
  • (10)ATF MMU转换表
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (7)svelte 教程: Props(属性)
  • (二)JAVA使用POI操作excel
  • (一)Java算法:二分查找
  • (一)Neo4j下载安装以及初次使用
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)基于IDEA的JAVA基础1
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)大道至简,职场上做人做事做管理
  • (转)人的集合论——移山之道
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net程序集学习心得
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @DataRedisTest测试redis从未如此丝滑