Il est possible d'utiliser la commande jobs pour lister les processus en arrière plan et ainsi faire une boucle pendant les 5 secondes, par exemple :
#!/bin/bash
#
# Lance une commande rsh en forcant un kill après une durée de 5 sec
# pour eviter que rsh reste bloqué
#
# on execute le rsh en arrière plan
rsh "$@" &
# on récupère le PID du rsh
PID=$!
for i in $(seq 5)
do
#options de jobs
# -p affiche le PID des processus en backgroupd
# -r n'affiche que les processus qui sont en cours d'execution (pas ceux qui sont déjà terminés)
# Si le process est terminé, on peut quitter tranquillement.
jobs -pr | grep -q $PID || exit
sleep 1
done
# au bout de 5 sec on kill le pid en question
kill -TERM $PID 2> /dev/null
# Utiliser jobs
Posté par Étienne . En réponse au message Limiter le temps maxi d'execution d'une commande. Évalué à 4.
#!/bin/bash
#
# Lance une commande rsh en forcant un kill après une durée de 5 sec
# pour eviter que rsh reste bloqué
#
# on execute le rsh en arrière plan
rsh "$@" &
# on récupère le PID du rsh
PID=$!
for i in $(seq 5)
do
#options de jobs
# -p affiche le PID des processus en backgroupd
# -r n'affiche que les processus qui sont en cours d'execution (pas ceux qui sont déjà terminés)
# Si le process est terminé, on peut quitter tranquillement.
jobs -pr | grep -q $PID || exit
sleep 1
done
# au bout de 5 sec on kill le pid en question
kill -TERM $PID 2> /dev/null