对于学生环境,我有一个简单的 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 &