Existe-t-il un moyen de générer une liste complète des processus dans solaris, sans lignes tronquées? J'ai essayé la ps
commande avec les arguments suivants:
-f Génère une liste complète. (Voir ci-dessous pour signification des colonnes dans une liste complète ing.)
-l Génère une longue liste. (Voir ci-dessous.)
Donc, ces deux-là semblent faire ce que je veux, cependant, plus bas dans la page de manuel ps, je trouve ceci:
args La commande avec tous ses arguments en tant que chaîne. L'implémentation peut tronquer cette valeur à la largeur du champ; c'est dépendant de la mise en œuvre, que une troncature supplémentaire se produit. Il est non spécifié si la chaîne représenté est une version de l'argument liste comme il a été passé à la commande quand il a commencé, ou est une version de la arguments comme ils peuvent avoir été modifiés par l'application. Les applications ne peuvent pas dépendent de pouvoir modifier leur liste d'arguments et ayant cette modification être reflété dans la sortie de ps. L’implémentation Solaris limite la chaîne à 80 octets; la ficelle est la version de la liste d'arguments telle qu'elle était passé à la commande quand il a commencé.
Ce qui indique essentiellement que la sortie va être tronquée et que je ne peux rien y faire. Donc, je viens ici. D'autres personnes ont sûrement rencontré ce problème et ont peut-être même un moyen de le contourner. J'imagine que ps ne peut pas le faire et que je dois donc utiliser d'autres outils pour le faire. Est-ce exact?
ps
commande? Dans l'affirmative, veuillez mettre à jour la question afin qu'elle soit plus claire.Réponses:
tu pourrais essayer
cela vous donne une liste de tous les arguments
ou bien utilisez un autre ps. Si exécuté en tant que root (ou n'importe quel utilisateur avec suffisamment de privilèges)
vous donnera tous les arguments. Sa partie de SUNWscpu, "Compatibilité de la source, (Usr)"
la source
pargs
affiche la copie en cours de traitement des arguments de la ligne de commande (et éventuellement de l'environnement). Bon à savoir, merci!Le noyau n'est pas obligé de suivre les arguments en ligne de commande. Lorsqu'un programme est lancé via l'
execve
appel, le noyau doit copier les arguments dans la mémoire de processus (afin qu'ils soient disponibles commeargv
dans un programme C, par exemple). Après cela, le noyau peut supprimer la mémoire utilisée pour stocker les arguments de ligne de commande initiaux. Le processus est autorisé à écraser sa copie des arguments. Il se peut donc qu'il n'y ait aucune trace d'arguments.Certaines variantes Unix conservent une copie des arguments sous une forme ou une autre. Solaris expose des données dans
/proc/$pid
. Depuis OpenSolaris 2009.06, la seule trace des arguments est in/proc/$pid/psinfo
, où ils sont concaténés avec des espaces (vous ne pouvez donc pas distinguer entrefoo "one" "two"
etfoo "one two"
) et la chaîne résultante est tronquée à 80 octets. Ce champ/proc/$pid/psinfo
est ce qui estps
imprimé dans laargs
colonne.Par ailleurs, les options
-f
et-l
contrôlent les champs à imprimer, et non leur caractère tronqué.la source
ps -e
donne la liste de tous les processus en cours d'exécution. Il y a aussi çaps -elf
.la source
En fonction de la
ps
commande que vous utilisez, j'utilisela source
prstat
vous donnera les processus en cours d'exécution avec leurs pids et l'utilisation du processeur.la source