Afficher la ligne de commande d’un processus
Posted by Daniel on 30 Juin 2008 at 09:00 | Tagged as: solaris
Quand on examine les processus tournant sur un système, il arrive fréquemment que les lignes de commandes ayant donné naissance à ces processus soient trop longues pour être affichées en entier par des outils comme ps, prstat ou top. C'est très classique par exemple avec des moteurs d'application java. Il existe néanmoins plusieurs solutions sous Solaris pour afficher l'intégralité de la ligne de commande.
Prenons le script suivant, monscript, qui ne fait rien d'autre qu'afficher son pid et attendre :
# ./monscript -c "cette option ne fait rien" -d "celle-ci non plus" -t 2500 -l /tmp -x "et une derniere pour la route" Mon pid : 18894
Si on regarde avec un simple ps ou pgrep, la commande est tronquée :
# ps -edf | grep 18894 u9203118 18894 18299 0 09:23:29 pts/2 0:00 /bin/sh ./monscript -c cette option ne fait rien -d celle-ci non plus -t 2500 - # pgrep -lf monscript 18894 /bin/sh ./monscript -c cette option ne fait rien -d celle-ci non plus -t 2500 -
Solaris 9 et 10
Depuis Solaris 9, une commande spécifique est présente sur le système pour afficher ces informations, il s'agit de la commande pargs, que l'on utilise généralement avec l'argument -l pour afficher la ligne complète :
# pargs -l 18894 /sbin/sh ./monscript -c 'cette option ne fait rien' -d 'celle-ci non plus' -t 2500 -l /tmp -x 'et une derniere pour la route'
Toutes les versions de Solaris
Quelle que soit la version de Solaris, il y a une autre solution pour afficher cette information, qui consiste à utiliser une ancienne version de la commande ps, qui fait partie du Source Compatibility Package (SUNWscpu). Ce package contient des exécutables et des bibliothèques permettant d'assurer la compatibilité binaire pour les applications SunOS 4.x. Les binaires se trouvent dans le répertoire /usr/ucb :
# /usr/ucb/ps -axww | grep 18894 18894 pts/2 S 0:00 /bin/sh ./monscript -c cette option ne fait rien -d celle-ci non plus -t 2500 -l /tmp -x et une derniere pour la route
Attention : il est nécessaire d'exécuter cette commande avec les droits root, pour pouvoir examiner l'environnement du processus concerné. Sans ces droits, la ligne de commande sera tronquée.
Notez au passage que la commande pargs de Solaris 9 et 10 est la seule a mettre en évidence les guillemets (transformés en simple quotes pour l'occasion) des paramètres, ils n'apparaissent pas avec ps ou pgrep.