小编Adr*_*nez的帖子

由 init.d 启动的保持活动进程的标准或最佳方式

我正在寻找一种标准方法或最佳实践来保持由init.dshell 脚本启动的守护进程。

或者更好的是,有没有办法让它直接从/etc/init.d

具体来说,我有一个名为 dtnd 的守护进程,它具有无限循环,用于查找意外结束的进程,如果有的话,守护进程会再次唤醒它们。此外,我使用 start-stop-daemon 工具来让进程从给定的系统用户运行。

我想从启动时运行这个 dtnd 守护进程。为了实现这种行为,我创建了一个 init.d 脚本,它使用 start、stop 和 status 命令“包装”dtnd 文件。

我有两个问题要解决:

  1. 有没有办法从 init.d shell 脚本中实现使某些进程保持活动状态。是标准/最佳实践吗?

  2. 建议使用无限循环保持进程存活?我想最好使用一些命令respawn来实现这一点。这是正确的?

我知道respawn命令的存在。我认为这就是我需要的,但我不明白之间的工作流程/etc/init.d//etc/init。谁能帮我?

请注意,我没有inittab文件既没有暴发户(我只被允许使用/etc/init/etc/init.dcron和系统工具start-stop-daemon。我的意思是,只有默认工具)

非常感谢您的参与!

startup debian daemon init init.d

15
推荐指数
2
解决办法
2万
查看次数

如果 Systemd 不侦听端口,则重新启动服务

我已经在 Debian 8 中使用 Systemd 一段时间了。我使用 Restart=on-failure 选项在出现故障时唤醒服务。

我想知道如果服务没有侦听特定端口(即使进程仍在运行),是否有办法强制重新启动服务。

我需要它的原因是因为我们正在开发新功能来解决这个问题,但这需要一段时间。同时,我们需要一个解决方法。

我开发了一个脚本来检查该状态:

#! /bin/bash
PORTS=( 1452 542 )
for port in ${PORTS[@]}; do
    netstat -anp | grep $port > /dev/null 2>&1
    if [ "$?" -ne 0 ]; then
        # Port blocked. Kill the running process and start it again after a while
done
Run Code Online (Sandbox Code Playgroud)

这个脚本是使用 cron 定期触发的。我知道这是一个肮脏的把戏。这就是为什么我想在 Systemd 检查中集成该行为。那可能吗?

先感谢您。

干杯,

一种。

linux monitoring debian systemd

5
推荐指数
1
解决办法
2560
查看次数

标签 统计

debian ×2

daemon ×1

init ×1

init.d ×1

linux ×1

monitoring ×1

startup ×1

systemd ×1