systemd 强大的初始化系统和服务管理器

在Linux下,systemd 是一个非常强大的初始化系统和服务管理器,
它可以用来管理各种系统服务和进程。如果想要使用 systemd 来监控一个进程,
并在它退出时自动重新启动它,可以为该进程创建一个 systemd 服务单元文件。

以下是如何为一个进程创建一个简单的 systemd 服务单元文件,并在进程退出时自动重启它的步骤:

  以a.out为例子,改程序在/opt路径下存储,用户为test


首先,创建一个新的服务单元文件:


sudo nano /etc/systemd/system/a-out.service

然后,将以下内容粘贴到文件中:

ini
[Unit]  
Description=Custom Service for a.out  
After=network.target  
 
[Service]  
Type=simple  
ExecStart=/opt/a.out  
Restart=on-failure  
RestartSec=5  
User=test  
Group=test  
 
[Install]  
WantedBy=multi-user.target

这里的关键点解释:

    Type=simple 表示这个服务将立即启动并等待 ExecStart 命令完成。
    ExecStart=/opt/a.out 指定了要运行的程序。
    Restart=on-failure 表示当服务进程异常退出时(返回值非零)重启它。如果你想在程序正常退出(返回值零)时也重启,可以使用 Restart=always。
    RestartSec=5 表示在重启服务之前等待5秒。
    User=test 和 Group=test 指定了运行服务的用户和组。

保存并关闭文件后,重新加载 systemd 配置:


sudo systemctl daemon-reload

接下来,启用这个服务,以便在系统启动时自动运行:


sudo systemctl enable a-out.service

最后,启动服务:


sudo systemctl start a-out.service

现在,a.out 应该在开机时自动启动,并且如果它退出,systemd 会在5秒后尝试重新启动它。请注意,Restart=on-failure 只有在进程非零退出时才会重启,如果你希望无论何种情况都重启,请更改为 Restart=always。

确保 /opt/a.out 是一个可执行文件,并且 test 用户有权限执行它。如果需要,你可能需要调整文件权限或所有权:


sudo chown test:test /opt/a.out  
sudo chmod +x /opt/a.out

此外,请检查 a.out 是否设计为在后台运行或是否使用了任何守护进程模式,因为 systemd 通常期望服务在后台运行。如果 a.out 是一个交互式程序,你可能需要对其进行修改或包装,以便它可以作为服务运行。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值