l'utilisation de pidof fait tripler le temps de chargement du script sur x64 (passe de 5ms a 17-25ms) et entre 3x et 4x sur ARM (de 8-20ms à 45-65ms).
Sur ma machine, qui n'est pas à genoux, un simple pidof firefox prend en effet à peu près 10ms. Il faut quand même lancer un shell qui charge un exécutable (deux avec wc) et faire plein d'appels système, puis matcher une chaine de caractères sur plusieurs centaines de candidats. Du coup, ça prend le temps que ça prend, on parle quand même de moins de 1/50e de seconde pour une tâche que tu ne vas pas réaliser toutes les secondes...
Si tu as le contrôle de soft1 et soft2, pourquoi ne pas leur faire créer un fichier vide quelque part dans /tmp, ou un truc comme ça? Ça devrait aller beaucoup plus vite de vérifier l'existence d'un fichier plutôt que d'appeler pidof...
J'avoue ne pas voir comment utiliser le contenu de /proc en partant de noms de processus.
Tu peux parser le nom du soft, par exemple dans /proc/*/cmdline sur tous les pid. Est-ce que pidoff ne ferait pas un truc comme ça?
[^] # Re: man pidof
Posté par arnaudus . En réponse au message [Solved] [Optimisation] PHP/Bash tester le plus rapidement si un process est actif. Évalué à 1. Dernière modification le 18 mars 2019 à 13:20.
Sur ma machine, qui n'est pas à genoux, un simple pidof firefox prend en effet à peu près 10ms. Il faut quand même lancer un shell qui charge un exécutable (deux avec wc) et faire plein d'appels système, puis matcher une chaine de caractères sur plusieurs centaines de candidats. Du coup, ça prend le temps que ça prend, on parle quand même de moins de 1/50e de seconde pour une tâche que tu ne vas pas réaliser toutes les secondes...
Si tu as le contrôle de soft1 et soft2, pourquoi ne pas leur faire créer un fichier vide quelque part dans /tmp, ou un truc comme ça? Ça devrait aller beaucoup plus vite de vérifier l'existence d'un fichier plutôt que d'appeler pidof...
Tu peux parser le nom du soft, par exemple dans /proc/*/cmdline sur tous les pid. Est-ce que pidoff ne ferait pas un truc comme ça?