06_Linux中如何让程序重启后自动启动

Linux中如何让程序重启后自动启动

systemd单元文件

Systemd 是现代 Linux 发行版中最常用的初始化系统。你可以通过创建一个 .service 文件来定义服务,并将其放置在 /etc/systemd/system 目录下。

1.创建服务文件

复制代码
sudo touch /etc/systemd/system/myapp.service

在该文件中,可以定义服务的各项属性

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

[Service]
Type=simple
ExecStart=/usr/local/bin/myapp
Restart=on-failure
User=myuser
WorkingDirectory=/var/lib/myapp

[Install]
WantedBy=multi-user.target

!!!服务配置文件的介绍

假设你的应用程序位于 /opt/myapp 目录下,并且有一个名为 myapp 的可执行文件。我们将创建一个名为 myapp.service 的文件,以定义如何启动、停止和服务的行为。

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

[Service]
Type=simple
User=myuser
Group=mygroup
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
Restart=on-failure
TimeoutSec=30
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target

Unit\] 部分 Description:服务的描述。 After:定义此服务依赖于哪些其他服务。在这里,我们指定 network.target,意味着服务将在网络准备好之后启动。 \[Service\] 部分 Type:定义服务的启动类型。simple 表示服务只需启动一个主进程。 User:指定服务运行时使用的用户。 Group:指定服务运行时使用的组。 ExecStart:指定启动服务时应执行的命令。这里是启动 /opt/myapp/myapp。 WorkingDirectory:指定服务的工作目录。 Restart:定义服务在失败后的重启策略。on-failure 表示只有在服务异常退出时才重启。 TimeoutSec:定义服务启动的最大超时时间,单位为秒。 StandardOutput 和 StandardError:指定标准输出和标准错误输出的位置。这里设置为 syslog,表示输出将被发送到系统日志。 SyslogIdentifier:定义发送到 syslog 的消息的标识符。 \[Install\] 部分 WantedBy:指定此服务应该在哪个目标中激活。multi-user.target 表示服务应在多用户模式下启动。

2.需要配置服务的状态(加载和启用服务)

复制代码
sudo systemctl daemon-reload //重新加载服务
sudo systemctl enable myapp.service
sudo systemctl start myapp.service

3.验证服务程序的运行状态

复制代码
sudo systemctl status myapp.service

4.打印程序的标准输出

复制代码
journalctl -f
相关推荐
Johny_Zhao1 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao2 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1233 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑3 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件3 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash3 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI4 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行4 天前
Linux和window共享文件夹
linux
Sinclair5 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器