Linux Systemd 配置开机自启
博文目录
文章目录
- Systemd
- 操作方式
- 配置方式
- 配置示例
- 参考
Systemd
Systemd 是一个用于启动、管理和监控 Linux 系统的初始化系统。它是许多现代 Linux 发行版中默认的初始化系统,取代了传统的 SysVinit 和 Upstart。
Systemd 的引入在 Linux 社区引起了一些争议,因为它与传统的初始化系统有很大的差异。然而,它的设计目标和功能使得管理和维护 Linux 系统变得更加高效和便捷。它已经成为许多主流 Linux 发行版的标准选择,并得到了广泛的应用和支持。
Systemd 的设计目标是提供更快的启动速度、更好的资源管理和更强大的系统监控功能。它引入了一些新的概念和功能,包括以下几个主要方面:
- 单位(Unit):Systemd 使用单位(Unit)作为系统组件的基本单元。单位可以是服务(service)、套接字(socket)、设备(device)、挂载点(mount)等。每个单位都有一个对应的配置文件,用于描述其行为和依赖关系。
- 依赖关系管理:Systemd 可以自动解决单位之间的依赖关系。每个单位可以指定其所依赖的其他单位,Systemd 将根据依赖关系自动按需启动或停止单位。
- 并行启动:Systemd 支持并行启动系统单位,以提高系统的启动速度。它可以通过并行处理单位的依赖关系来最大程度地利用系统资源,加快启动过程。
- 日志管理:Systemd 引入了 Journal(日志)系统,用于管理和存储系统日志。Journal 提供了结构化的日志记录和高效的日志查询功能,可以方便地检查系统的运行状态和故障排查。
- 服务管理:Systemd 提供了强大的服务管理功能,可以启动、停止、重启和管理系统服务。它支持服务的自动重启、进程监控和故障恢复等功能,提高了系统的可靠性和可用性。
- 控制接口:Systemd 提供了命令行工具和控制接口,用于管理和监控系统。通过 systemctl 命令可以查看和控制单位的状态,启动和停止服务,查看系统日志等。
最直观的体验就是, 通过 Systemd 配置程序开机启动会非常简单且统一, 体验非常好
操作方式
# 所有指令都可以省略 后缀 .service, 如 systemctl enable myapp
# 设置开机自启
systemctl enable myapp.service
# 取消开机自启
systemctl disable myapp.service
# 启动
systemctl start myapp
# 停止
systemctl stop myapp
# 重载
systemctl reload myapp
配置方式
需要创建一个 Systemd 服务单元文件,并在其中指定要在启动时运行的命令或程序。
据说, 通过二进制方式安装的程序才需要手动创建 Systemd 服务单元文件, 如 xxxx.service, 通过 yum 等安装的程序会自带该文件且会自动放到合适的位置, 可以直接执行 systemctl enable xxxx.service 来启用
创建服务单元文件:在 /etc/systemd/system/ 或 /usr/lib/systemd/system 目录下创建一个以 .service 为后缀的服务单元文件,例如myapp.service。
编辑服务单元文件:使用文本编辑器打开刚刚创建的服务单元文件,并将以下内容粘贴到文件中:
[Unit]
Description=My App
After=network.target[Install]
WantedBy=multi-user.target[Service]
ExecStart=/path/to/your/app
Restart=always
User=your_username
Group=your_groupname
Environment="PATH=/usr/bin" "ANOTHER_ENV_VAR=some_value"
根据实际需求进行适当修改:
Description:服务的描述。
After:指定服务启动的依赖项。如果应用需要网络连接,请设置为 network.target。
ExecStart:指定要在启动时运行的命令或程序的完整路径。将/path/to/your/app替换为实际命令或程序的路径。
Restart:设置服务在出现问题时自动重启。
User和Group:指定运行服务的用户和组。将your_username和your_groupname替换为实际用户和组名。
Environment:设置环境变量。可以根据需要添加多个环境变量。
WantedBy:指定服务所属的运行级别。将 multi-user.target 替换为所需的运行级别。
保存并关闭文件。
重新加载Systemd配置:在终端中执行以下命令,以重新加载Systemd配置并启用新创建的服务单元文件:
systemctl daemon-reload
systemctl enable myapp.service
这将使 Systemd 在启动时自动加载并运行指定的服务。
启动服务:
systemctl start myapp.service
检查服务状态:
systemctl status myapp.service
如果一切正常,应该看到服务的状态为 绿色 “active”。
现在,服务已经配置为开机自启。在下一次重启系统后,Systemd 将自动加载并运行该服务。
配置示例
# mysql
# https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysql# Have mysqld write its state to the systemd notify socket
Type=notify# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE = 10000Restart=on-failureRestartPreventExitStatus=1# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1PrivateTmp=false
# redis
[Unit]
Description=Redis Server
After=network.target[Install]
WantedBy=multi-user.target[Service]
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf
Type=forking
PrivateTmp=true
# tomcat
[Unit]
Description=Tomcat 8.5.70
After=network.target[Install]
WantedBy=multi-user.target[Service]
ExecStart=/usr/local/bid/apache-tomcat-8.5.70/bin/startup.sh
Type=forking
PrivateTmp=true
参考
官方文档 MySQL 8.0 参考手册 - 在 Linux 安装 MySQL - 使用 Systemd 管理 MySQL - MySQL 8.0 安全部署向导 - 安装后操作 - 使用 Systemd 启动 MySQL Server
相关文章:
Linux Systemd 配置开机自启
博文目录 文章目录 Systemd操作方式配置方式配置示例参考 Systemd Systemd 是一个用于启动、管理和监控 Linux 系统的初始化系统。它是许多现代 Linux 发行版中默认的初始化系统,取代了传统的 SysVinit 和 Upstart。 Systemd 的引入在 Linux 社区引起了一些争议&…...
华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能
本文收录在专栏:#云计算入门与实践 - 华为云 专栏中,本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下: 华为云云耀云服务器L实例评测 | 从零开始:云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…...
卸载Visual Studio 2010学习版 —— 卸载VCExpress
目录 最初安装Visual Studio 2010学习版是因为计算机二级 C语言考试而装,现如今考完试后便可卸载掉了,安装简便而卸载却没有uninstall.exe文件。故本文提供卸载方式。 进入到程序目录,找到setup.exe文件,也可以在程序目录搜索set…...
react的状态管理简单钩子方法
1.recoil useProvider文件: import { atom, useRecoilState } from recoil;const initState atom({key: initState,default: {state: [],}, })// 将业务逻辑拆分到一个单独文件中,方便进行状态管理 export interface StateProps {id: number;text: string;isFini…...
【Git】轻松学会 Git:深入理解 Git 的基本操作
文章目录 前言一、创建 Git 本地仓库1.1 什么是仓库1.2 创建本地仓库1.3 .git 目录结构 二、配置 Git三、认识 Git 的工作区、暂存区和版本库3.1 什么是 Git 的工作区、暂存区和版本库3.2 工作区、暂存区和版本库之间的关系 四、添加文件4.1 添加文件到暂存区和版本库中的命令4…...
什么是HTTP头部(HTTP headers)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 理解 HTTP 头部(HTTP Headers)⭐ HTTP 头部的分类⭐ HTTP 头部的应用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦&#x…...
SpringCloud Alibaba 入门到精通 - Sentinel
SpringCloud Alibaba 入门到精通 - Sentinel 一、基础结构搭建1.父工程创建2.子工程创建 二、Sentinel的整合SpringCloud1.微服务可能存在的问题2.SpringCloud集成Sentinel搭建Dashboard3 SpringCloud 整合Sentinel 三、服务降级1 服务降级-Sentinel2 Sentinel 整合 OpenFeign3…...
【深度学习实验】前馈神经网络(三):自定义多层感知机(激活函数logistic、线性层算Linear)
目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集 2. 激活函数logistic 3. 线性层算子 Linear 4. 两层的前馈神经网络MLP 5. 模型训练 一、实验介绍 本实验实现了一个简单的两层前馈神经网络 激活函数…...
HJ68 成绩排序
描述 给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低…...
FPGA——UART串口通信
文章目录 前言一、UART通信协议1.1 通信格式2.2 MSB或LSB2.3 奇偶校验位2.4 UART传输速率 二、UART通信回环2.1 系统架构设计2.2 fsm_key2.3 baud2.4 sel_seg2.5 fifo2.6 uart_rx2.7 uart_tx2.8 top_uart2.9 发送模块时序分析2.10 接收模块的时序分析2.11 FIFO控制模块时序分析…...
华为云Stack的学习(七)
八、华为云Stack存储服务介绍 1.云硬盘EVS 云硬盘(Elastic Volume Service,EVS),又名磁盘,是一种虚拟块存储服务,主要为ECS(Elastic Cloud Server)和BMS(Bare Metal Se…...
安装k8s集群
一、前置环境配置 安装两台centos 实验环境,一台pc配有docker环境,有两个centsos7容器,其中一个容器作为master,一个作为node。如果master与node都是用默认端口,会存在冲突,所以在此基础上做细微的调整。…...
C++中编写没有参数和返回值的函数
C中编写没有参数和返回值的函数 返回值为 void 函数不需要将值返回给调用者。为了告诉编译器函数不返回值,返回类型为 void。例如: #include <iostream>// void means the function does not return a value to the caller void printHi() {std…...
SWC 流程
一个arxml 存储SWC (可以存多个,也可以一个arxml存一个SWC)一个arxml 存储 composition (只能存一个)一个arxml 存储 system description (通过import dbc自动生成system) 存储SWC和composition的arxml文件分开&#…...
怒刷LeetCode的第10天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:两次拓扑排序 第二题 题目来源 题目内容 解决方法 方法一:分治法 方法二:优先队列(Priority Queue) 方法三:迭代 第三题 题目来源 题目内容…...
java框架-Springboot3-场景整合
文章目录 java框架-Springboot3-场景整合批量安装中间件NoSQL整合步骤RedisTemplate定制化 接口文档远程调用WebClientHttp Interface 消息服务 java框架-Springboot3-场景整合 批量安装中间件 linux安装中间件视频 NoSQL 整合redis视频 整合步骤 RedisTemplate定制化 Re…...
在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行
在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行 .bat中的代码部分: .bat中的代码echo offpython E:\python\yoloProjectTestSmallLarge\detect.pypause,我想你能帮在Bat To Exe Converter,修改成…...
PythonWeb服务器(HTTP协议)
一、HTTP协议与实现原理 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在网络上传输超文本数据的协议。它是Web应用程序通信的基础,通过客户端和服务器之间的请求和响应来传输数据。在HTTP协议中连接客户与服务器的…...
Northstar 量化平台
基于 B/S 架构、可替代付费商业软件的一站式量化交易平台。具备历史回放、策略研发、模拟交易、实盘交易等功能。兼顾全自动与半自动的使用场景。 已对接国内期货股票、外盘美股港股。 面向程序员的量化交易软件,用于期货、股票、外汇、炒币等多种交易场景ÿ…...
c语言进阶部分详解(经典回调函数qsort()详解及模拟实现)
大家好!上篇文章(c语言进阶部分详解(指针进阶2)_总之就是非常唔姆的博客-CSDN博客)我已经对回调函数进行了初步的讲解和一个简单的使用事例,鉴于篇幅有限没有进行更加详细的解释,今天便来补上。…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
