Comment obtenir la ligne de commande du processus UNIX?

8

Est-il possible de récupérer la ligne de commande qui a été utilisée pour appeler un processus sur Mac OS X?

user7656
la source
1
ps --pid $PID -o args=C'est ce que j'utilise, de toute façon ...
yardena
2
L'équivalent Mac de cette commande est:ps -p <pid> -o args=
Nate
1
si "-o args =" tronque la sortie, vous pouvez essayerps -p <pid> -o command=
Jose Alban

Réponses:

11

ps axvous montre la ligne de commande de tous les processus en cours d'exécution; vous pouvez chercher le pid que vous voulez.

Bkkbrad
la source
@ mark4o Ou simplement ps awux | cat, car ps -w ne limitera pas le nombre de colonnes à afficher lorsque la sortie n'est pas stdout, comme lorsqu'elle est redirigée vers une autre commande.
jtimberman
1
Pourquoi cela se produit-il chaque semaine? "Avertissement: mauvaise syntaxe ps, peut-être un faux '-'? Voir procps.sf.net/faq.html " et "Notez que" ps -aux "est différent de" ps aux ". Les normes POSIX et UNIX exigent que" ps -aux "affiche tous les processus appartenant à un utilisateur nommé" x ", ainsi que l'impression de tous les processus qui seraient sélectionnés par l'option -a. Si l'utilisateur nommé" x "n'existe pas, ce ps peut interpréter la commande comme "ps aux" à la place et affiche un avertissement. Ce comportement est destiné à faciliter la transition des anciens scripts et habitudes. Il est fragile, sujet à changement et ne doit donc pas être utilisé. "
Hello71
Je ne sais pas, Hello71. J'ai corrigé ma réponse de deux ans pour vous.
Bkkbrad
4

Est-ce que:

~$ ps ax | grep "ntp"
   57   ??  Ss     0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n
 3104 s000  S+     0:00.00 grep ntp

faire ce dont vous avez besoin (changer ntp pour le programme qui vous intéresse)? Cela me donne généralement les arguments en ligne de commande des processus en cours d'exécution (j'utilise pour vérifier ce que Launchd a utilisé lors de l'exécution d'un démon système par exemple).

Le tentacule
la source
2

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

Bien qu'il soit spécifique à Linux, il obtient la ligne de commande du processus numéroté $PROCESSNUMBERdirectement à partir du noyau (la /proc/$PROCESSNUMBER/cmdlinepartie) et le rend lisible en plaçant chaque argument sur une ligne distincte en traduisant (avec tr -tokenreplace) les \ 0 en nouvelles lignes (\ n).

Cette ligne ne fonctionne que si vous mettez un vrai numéro de processus d'un processus en cours (vous pouvez en trouver un en exécutant la commande ps -ef) dans la partie $ PROCESSNUMBER!

JdeHaan
la source
3
L'affiche originale demandait Mac OS X (ce qui n'a pas d'origine procfs)
Andre Holzner
2
Ouxargs -0 < /proc/PID/cmdline
Bash