在 Linux 中将任何可执行文件作为服务运行
将任何可执行文件作为 Linux 服务运行
目录
以下是关于如何在 Linux 中使用 Systemd 将任意可执行文件配置为服务的说明。
上图是由 [Flux 1 dev 模型](https://flux1.dev “Flux 1 dev - text to image test) 生成的 AI 图像,代表了 Linux 的 DIY 风格。
Systemd
Systemd 是一些 Linux 发行版中的系统和服务管理器及初始化工具。
一些使用 Systemd 的流行发行版包括:
- Ubuntu 16.04 或更新版本
- Debian Jessie 或更新版本
- Arch Linux
- CentOS 7 / RHEL 7 或更新版本
- Fedora 15 或更新版本
systemctl
systemctl
是一个用于控制 systemd
的命令行工具。
列出所有服务
要列出所有服务,请运行以下命令:
systemctl list-units --type=service
创建服务文件
导航到 systemd 服务目录并创建一个带有 .service
扩展名的新文件:
sudo nano /etc/systemd/system/your_service_name.service
配置服务文件:
将以下内容添加到文件中,并根据需要调整值:
[Unit]
Description=Your Service Description
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/your/executable/directory
ExecStart=/path/to/your/executable
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
保存并关闭文件。
延迟服务启动
如果你怀疑在服务启动过程中存在时间问题,可以考虑在服务配置中添加延迟:
[Service]
ExecStartPre=/bin/sleep 10
服务依赖
要配置服务依赖项:
在服务配置文件的 [Unit]
部分中添加以下指令:
使用 After=
指定应在你的服务之前启动的服务:
After=network.target other_service.service
使用 Requires=
定义硬依赖:
Requires=required_service.service
使用 Wants=
定义软依赖:
Wants=optional_service.service
重新加载 systemd 以识别新服务
sudo systemctl daemon-reload
检查服务依赖项
sudo systemctl list-dependencies your_service_name.service
启用服务以在启动时运行
sudo systemctl enable your_service_name.service
要验证服务是否设置为在启动时运行:
sudo systemctl is-enabled your_service_name.service
启动服务
sudo systemctl start your_service_name.service
# 或
sudo systemctl restart your_service_name.service
检查服务状态
如果出现问题,请检查 Linux 服务日志和状态:
sudo systemctl status your_service_name.service
或
sudo journalctl -u your_service_name.service
对于 Python 脚本
ExecStart=/path/to/conda/envs/my_env_name/bin/python /path/to/executable.py
评论
现在可以使用 systemctl
命令(如 start
、stop
、restart
和 status
)来管理你的服务。
对于需要参数的可执行文件,请相应地修改服务文件中的 ExecStart
行。
例如,如果你需要运行一个 Java 应用程序,请在 ExecStart
行中使用完整的 Java 命令。
请记住根据 需要 调整文件权限和所有权,并确保可执行文件具有正确的执行权限。
使用 chkservice 控制 Systemd 服务
而不是执行以下命令:
sudo systemctl start some-serviceservice
# 或
sudo systemctl restart some-serviceservice
你可以使用一个轻量级的控制台 UI 工具:
sudo apt-get install chkservice
sudo chkservice