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
相关推荐
学技术的大胜嗷8 分钟前
pycharm连接远程linux服务器上的docker进行深度学习训练
linux·服务器·pytorch·python·深度学习·神经网络·pycharm
secret_to_me9 分钟前
电脑远程启动Wol
linux·电脑
两仪式quq26 分钟前
Linux-环境变量
linux·运维·服务器
啥也不会干的小码34 分钟前
【越学学糊涂的Linux系统】(1)Linux环境搭建|账户管理
linux
阳光九叶草LXGZXJ1 小时前
南大通用数仓-GCDW-学习-03-用户管理
linux·运维·数据库·学习
秣宇1 小时前
Linux提升篇-服务器BIOS介绍
linux·运维·服务器
影子落人间1 小时前
Linux常用命令大全
linux·运维·服务器
keep__go1 小时前
GBase8a 开机自启动
linux·运维·服务器·南大通用·gbase8a
安亿1031 小时前
linux下的日志编写
linux·服务器·c语言·软件构建
咩咩大主教1 小时前
C++在Linux实现多线程和多进程的TCP服务器和客户端通信
linux·服务器·c语言·开发语言·c++·网络协议·tcp/ip