Sur SunOS, il y a la commande pargs
qui affiche les arguments de ligne de commande passés au processus en cours d'exécution.
Y a-t-il une commande similaire sur d'autres environnements Unix ?
Sur SunOS, il y a la commande pargs
qui affiche les arguments de ligne de commande passés au processus en cours d'exécution.
Y a-t-il une commande similaire sur d'autres environnements Unix ?
Il existe plusieurs options :
ps -fp
cat /proc//cmdline | sed -e "s/\x00/ /g"; echo
Il y a plus d'informations dans /proc/
sur Linux, il suffit de jeter un coup d'œil.
Sur d'autres Unix, les choses peuvent être différentes. La commande ps
fonctionnera partout, les choses dans /proc
sont spécifiques au système d'exploitation. Par exemple, sur AIX, il n'y a pas de cmdline
dans /proc
.
Sur Linux, vous aurez probablement besoin de -ww (c'est-à-dire ps -ww -fp
) pour spécifier une sortie large car s'il y a plusieurs commandes, elles pourraient être coupées.
La balise -ww
permet d'accéder aux arguments complets de la ligne de commande (autant que stocké par le noyau). Voir aussi: comment solaris et bsd obtiennent les paramètres de ligne de commande non tronqués pour un processus et options de ps
Pour les systèmes Linux et Unix, vous pouvez utiliser ps -ef | grep process_name
pour obtenir la commande complète.
Sur les systèmes SunOS, si vous voulez obtenir la commande complète, vous pouvez utiliser
/usr/ucb/ps -auxww | grep -i process_name
Pour obtenir la commande complète, vous devez devenir super utilisateur.
pargs -a PROCESS_ID
donnera une liste détaillée des arguments passés à un processus. Il affichera le tableau des arguments de cette manière:
argv[0]: premier argument
argv[1]: deuxième..
argv[*]: et ainsi de suite..
Je n'ai pas trouvé de commande similaire pour Linux, mais j'utiliserais la commande suivante pour obtenir une sortie similaire:
tr '\0' '\n' < /proc//environ
Vous pouvez utiliser pgrep
avec -f
(ligne de commande complète) et -l
(description étendue) :
pgrep -l -f ModèleDeProcessus
Cette méthode présente une différence cruciale avec toutes les autres réponses : elle fonctionne sous CygWin, donc vous pouvez l'utiliser pour obtenir la ligne de commande complète de n'importe quel processus s'exécutant sous Windows (exécutez en tant qu'élevé si vous voulez des données sur n'importe quel processus élevé/administrateur). Toute autre méthode pour faire cela sous Windows est plus compliquée (par exemple).
De plus : dans mes tests, la méthode pgrep a été le seul système qui a fonctionné pour obtenir le chemin complet des scripts s'exécutant à l'intérieur de python de CygWin.
Celui-ci imprime en fait le nom exécutable original aussi: $ exec -a fakename bash & [1] 14102 [1]+ Stopped exec -a fakename bash $ xargs -0 < /proc/14102/cmdline; fakename $ pgrep -l -f fakename; 14102 bash
Sur Linux
cat /proc//cmdline
renvoie la ligne de commande du processus (commande incluant les arguments) chaque enregistrement étant terminé par un caractère NUL
.
Un exemple de Shell Bash:
$ mapfile -d '' args < /proc/$$/cmdline
$ echo "#${#args[@]}:" "${args[@]}"
#1: /bin/bash
$ echo $BASH_VERSION
5.0.17(1)-release
Xargs -0 echo < /proc//cmdline. Vous pouvez également le faire avec /proc//environ aussi, bien que vous puissiez vouloir ajouter -n 1 pour cela.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
tr \\0 ' ' < /proc/<pid>/cmdline