Jusqu'à présent, j'ai utilisé
pidof -o %PPID -x "my-tool"
Pour détecter le pid d'une instance éventuellement en cours d'exécution de my-tool.
Ceci est la version courte du fichier my-tool, un script bash exécutable
#!/bin/bash
if pidof -o %PPID -x "my-tool"; then
echo "Already running"
exit 1
fi
... if not running go on
Mais maintenant, je dois autoriser une seule instance par utilisateur et plusieurs par machine , afin que nous puissions même avoir 100 my-tool en cours d'exécution au même moment, mais seulement 1 par utilisateur.
Notez que j'ai besoin d'un test pour créer quelque chose comme un singleton. Si l'outil est démarré et qu'une autre instance est en cours d'exécution, il se ferme automatiquement.
En bref: j'ai besoin qu'un script bash puisse détecter s'il s'exécute déjà pour l'utilisateur actuel et dans ce cas, il doit quitter.
Comment ?
pidof
, il y a de meilleurs outils pour mentirpgrep