• [^] # Re: De toute façon ça ne marche pas ...

    Posté par . En réponse au message système de verrou ( 1 = 2, sisi avec linux ). Évalué à 4.

    Bon, le problème: quand tu execute une commande via ` `, tu lances un sous shell. Pour contourner, il faut supprimer de la liste les process ayant en PID ou PPID le numéro de process de ton script. Par exemple avec awk :

    #!/bin/sh

    if [ `ps -ao pid,ppid,command | awk 'BEGIN {CTR=0} ((1ドル != "'$$'") && (2ドル != "'$$'")) && (4ドル ~ ".*/*'0ドル'") {
    CTR=1
    }
    END { print CTR }'` -gt 0 ]
    then
    echo " Process tournant deja"
    fi
    sleep 100

    ------------------------------------------------------
    plus simple on compte le nombre de process, s'il est superieur a 1 on sort de awk en retournant une erreur:

    #!/bin/sh

    if ! ps -ao command | awk '((1ドル == "/bin/sh") && (2ドル ~ ".*/*'0ドル'")) {
    CTR++
    }
    END { exit (CTR-1) }'

    then
    echo " Process tournant deja"
    fi

    sleep 100



    Je viens de me rendre compte dans la premiere solution que je ne teste pas la presence de "/bin/sh", mais c'est pas grave, l'idée est là (un test a ajouter).