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:
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).
[^] # Re: De toute façon ça ne marche pas ...
Posté par totof2000 . En réponse au message système de verrou ( 1 = 2, sisi avec linux ). Évalué à 4.
#!/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).