ps
renvoie bash
comme nom du processus ... J'aimerais plutôt le nom du script Shell.
Par exemple, si mon script est TestEric.sh
, je souhaite répertorier le nombre d'instances de ce script en cours d'exécution.
Le problème ici est que ps
par défaut ne montre que la commande de base dans sa sortie, pas toute la ligne de commande, y compris les arguments.
Si vous lancez votre script avec bash TestEric.sh
, la commande de base est bash
. Si vous l'exécutez en tant que TestEric.sh
(avec éventuellement son chemin), la commande de base sera celle-ci et non pas bash.
Vous pouvez facilement utiliser pgrep
au lieu de ps
pour répertorier les processus filtrés par nom. Il possède un drapeau -f
qui lui permet de correspondre au modèle donné avec la ligne de commande complète au lieu de la seule commande de base.
L’indicateur -a
lui permet d’afficher la totalité de la ligne de commande dans sa sortie à des fins de débogage au lieu du simple PID. Une fois que vous avez vérifié que cela fonctionne, vous pouvez/devez le supprimer à nouveau dans votre script.
Essaye ça:
pgrep -f -a TestEric.sh
Vous pouvez ultérieurement compter les processus à l'aide de wc
en comptant les lignes de sortie pgrep
:
pgrep -f TestEric.sh | wc -l
Vous pouvez essayer de lancer ps u
à la place. Dans les pages de manuel, l'option u correspond à display user-oriented format
, ce qui affichera à la fois le shell utilisé pour exécuter le script et le nom du script lui-même.
Apparemment, cela aide si j'ajoute !#/bin/bash
au début du fichier ... Ensuite, le nom du script apparaît dans le rapport ps
.