2016-05-18 7 views
0

Ein Bash-Skript demo.shKill Bash-Skript mit Wartebefehl

#!/bin/bash ./prog1 & ./prog2 & wait

Verwenden timeout -s 9 5m demo.sh das Skript auszuführen.

Das Skript demo.sh war ohne & und wait. Ich möchte wissen, ob timeout prog1 und prog2 killt, wenn Zeitüberschreitung auftritt. Wie kann ich sicherstellen, dass alle Teilprozesse getötet werden?

Antwort

0

Die gegabelten Arbeitsplätze werden getötet werden, wenn Sie den Shell-Prozess von demo.sh gestartet töten (es sei denn, Sie so etwas wie disown $PID tun).

Sie können dies gewährleisten geschieht mit kill -0:

./prog1 & 
echo P1=$! 
./prog2 & 
echo P2=$! 

Sie können dann kill -0 ${PID1} und kill -0 ${PID2} und sicherzustellen, dass beide Befehle mit Exit-Status zurückzukehren 1, was bedeutet,

„nicht-Prozess finden konnten“