在 bash 脚本(simulatord、nc、ping)中监控 PID 和重生进程

在 bash 脚本(simulatord、nc、ping)中监控 PID 和重生进程

对于学生环境,我有一个简单的 bash 脚本,它在 Ubuntu 18.04 启动时运行(crontab -e 中的@reboot)。

它运行正常(java 文件启动、netcat 启动、ping 并且所有 PID 都可以通过“ps -aux”查看),但如果可能的话,我想让它更“万无一失”。

我可以在这个 Bash 脚本中放入任何内容来监视创建的 PID,然后在它们停止运行或被终止时再次动态地生成它们吗?

#!/bin/bash
echo myPassword | sudo -S service simulatord start &&
nc -k -l 2214 & 
nc -k -l 3612 & 
ping -i 290 192.168.0.101 & 
ping -i 290 10.10.3.254 &

该脚本启动一个模拟程序(simulatord),然后在后台并行运行以下命令。

理想情况下,我可以在这个 Bash 脚本中添加一些逻辑,使我能够“kill -9”ping 或 nc PID,然后让它重生,但我不确定这在 Bash 中是否可行或者我是否需要其他工具(Python 脚本?)

答案1

我可以想象使用一个函数循环运行每个程序,直到它看到停止条件。假设您使用 /var/run/stopcmd 的存在作为停止条件。那么它可能看起来像这样:

function run {
    while ! -e /var/run/stopcmd; do
        "$@"
    done
}

run nc -k -l 2214 & 
run nc -k -l 3612 & 
run ping -i 290 192.168.0.101 & 
run ping -i 290 10.10.3.254 &

相关内容