如何在自动终止时重启任一进程

时间:2017-01-17 06:39:55

标签: bash shell scripting automation

我有两个需要同时运行的进程(process1和process2-相同的名称)。

我写了一个脚本,如果那2个被杀,它将自动重启所有2个进程。 但是如果任何一个进程(任何人)被杀死,那么我就陷入了困境,那么特定的进程就没有重新启动。

#!/bin/bash

cd /Desktop/XYZ/

./process1 &

cd /Desktop/XYX/new/

./process1 &

while :
do

while pgrep process1 >/Desktop/XYZ/out.txt;

do

   sleep 5

done
    cd /Desktop/XYZ/

    ./process1 &

   cd /Desktop/XYX/new/

./process1 &

   sleep 10
done

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

只需在自己的子流程中启动监控代码。

#!/bin/bash

while :; do
    cd /Desktop/XYZ/
    ./process1
done &

while :; do
    cd /Desktop/XYX/new
    ./process1
done &

read  # halt until it gets input
pkill -P $$  # kill all children

我必须补充一点,这可能不是你想要长期运行服务的方式。您应该了解systemd service files如何为您或您的系统拥有的任何其他服务经理执行此操作。