• # Utiliser jobs

    Posté par . En réponse au message Limiter le temps maxi d'execution d'une commande. Évalué à 4.

    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