Linux开机自启动systemd配置

为什么需要systemd

在 Linux 系统中,确保关键服务能够在系统启动时自动运行是一项非常重要的任务。尤其是在服务器环境中,我们希望一些服务(比如服务器上部署的java应用)能够在系统每次启动后自动启动,从而确保业务的持续运行。在 Linux 中,常用的服务管理系统有两种:systemdsysvinit。本篇文章摘自网络,只做个人笔记记录备忘。

systemd 是 Linux 的一种系统和服务管理器,负责系统的引导过程,管理系统运行时的服务,并提供许多系统功能,如日志、时间同步等。它通过服务单元文件(通常为 .service 文件)来定义和管理服务,并提供强大的依赖管理和并行启动功能。

systemd 常用命令

(1)systemctl status <service-name>

可以使用systemctl status <service-name>来判断指定服务是否加入到systemd自启动。

(2)systemctl enable <service-name>

设置指定服务开启自启动

(3)启动服务

systemctl start <service_name>

(4)停止服务

systemctl stop<service_name>;注意不能用kill -9,自启动会将服务再次启动的

创建自定义的systemd服务

1 创建服务单元文件

systemd 服务通过服务单元文件(.service 文件)来管理。首先,你需要在 /etc/systemd/system/ 或/usr/lib/systemd/system目录中创建一个新的服务文件。例如,创建一个名为 myservice.service 的文件

2 服务单元文件配置

bash 复制代码
[Unit]
Description=My Custom Service
After=network.target

[Service]
ExecStart=/path/to/your/program --argument
Restart=always
User=youruser
Group=yourgroup

[Install]
WantedBy=multi-user.target

解释:

  • [Unit] :定义服务的描述和依赖。After=network.target 表示该服务会在网络启动后启动。
  • [Service] :定义服务的启动命令、重启策略、运行用户等。ExecStart 是服务启动时执行的命令。
  • [Install] :定义服务在哪个运行级别下启动。multi-user.target 表示该服务将在多用户模式下启动。

比如一个java应用的配置如下:

bash 复制代码
[Unit]
Description=template
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/myjava/
ExecStart=/opt/myjava/servicectl.sh start 2048m
ExecReload=/opt/myjava/servicectl.sh restart 2048m
ExecStop=/opt/myjava/servicectl.sh stop
PrivateTmp=true
Restart=on-failure

[Install]
WantedBy=multi-user.target

其中servicectl.sh是自定义的服务启动脚本

#!/bin/sh

./service.sh 1 \`ls \*.jar\` 2

注意:这种写法当前目录只能有一个java的jar包。

3 重新加载 systemd 配置

执行systemctl daemon-reload 命令重新加载 systemd 配置。

参考:https://cloud.tencent.com/developer/article/2587808

相关推荐
可可嘻嘻大老虎18 小时前
nginx无法访问后端服务问题
运维·nginx
JiMoKuangXiangQu18 小时前
ARM64 进程虚拟地址空间布局
linux·arm64 虚拟地址布局
阳光九叶草LXGZXJ19 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
无忧智库19 小时前
某市“十五五“地下综合管廊智能化运维管理平台建设全案解析:从数字孪生到信创适配的深度实践(WORD)
运维·智慧城市
春日见19 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
珠海西格19 小时前
“主动预防” vs “事后补救”:分布式光伏防逆流技术的代际革命,西格电力给出标准答案
大数据·运维·服务器·分布式·云计算·能源
无垠的广袤20 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚20 小时前
Kubectl 命令记录
linux·运维·服务器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.20 小时前
Keepalived单播模式配置与实战指南
linux·服务器·负载均衡
IDC02_FEIYA20 小时前
Linux文件搜索命令有哪些?Linux常用命令之文件搜索命令find详解
linux·运维·服务器