我有两个需要同时运行的进程(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
任何帮助将不胜感激。
答案 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如何为您或您的系统拥有的任何其他服务经理执行此操作。