引言

对于需要在Linux系统启动时自动运行特定服务,并在服务意外关闭时能够自动重启的场景,本文提供了一种简洁高效的解决方案。我们将利用系统内建的systemd工具来实现这一需求。

1、准备要执行的程序

首先确保你有一个可执行的程序。如果是简单的单命令程序如 ./prog 就直接可以使用,若是多参数的程序,如 ./prog aa bb cc,推荐创建一个启动脚本来简化管理。下面是一个基本的脚本模板:

#!/bin/bash
(
  /prog_1 &
  /prog_2 &
  /prog_3 &
  wait
)

有了脚本,记得增加可执行权限

chmod +x your-script.sh

此脚本将在后台运行你的程序,支持多个后台程序,并且只要有一个程序退出,就会触发全部程序的重启。

2、创建systemd服务单元

在 /etc/systemd/system/ 目录下创建一个新的服务描述文件,命名为 your-service-name.service,并填写如下内容:

[Unit]
Description=Your Service Description  # 此处填写你的服务描述
[Service]
User=root
WorkingDirectory=/path/to/your-service  # 指定程序的工作目录
ExecStart=/path/to/your-service/start.sh  # 指定启动脚本的路径
Restart=always
[Install]
WantedBy=multi-user.target

3、启动与管理服务

现在,你可以通过以下命令来启动、停止或检查你的服务状态:

systemctl daemon-reload  # 重新加载systemd配置
systemctl enable your-service-name  # 启用你的服务
systemctl start your-service-name  # 启动你的服务

# 如需停止服务
systemctl stop your-service-name

4、验证服务运行状态

使用以下命令来检查你的服务是否正在运行:

ps -ef | grep your-program-name

5、故障排查

如果不幸出错了

# 查看服务状态
systemctl status your-service
# 查看日志
journalctl -u your-service

通过这种方式,你可以确保你的服务在系统启动时自动运行,并在出现任何问题时自动恢复,从而保证了服务的高可用性。