Dans la plupart des cas, une simple exécution psest généralement suffisante, ainsi que vos indicateurs préférés pour permettre une sortie large. Je me penche vers ps -feww, mais les autres suggestions ici fonctionneront. Notez que si un programme a été démarré à partir de quelqu'un $PATH, vous ne verrez que le nom de l'exécutable, pas le chemin complet. Par exemple, essayez ceci:
$ lftp &
$ ps -feww | grep ftp
lars 9600 9504 0 11:30 pts/10 00:00:00 lftp
lars 9620 9504 0 11:31 pts/10 00:00:00 grep ftp
Il est important de noter que les informations visibles dans pspeuvent être complètement écrasées par le programme en cours d'exécution. Par exemple, ce code:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
Si je compile ceci dans un fichier appelé "monprogramme" et l'exécute:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
Et puis exécutez ps, je verrai un nom de processus différent:
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
Vous pouvez également regarder directement /proc/<pid>/exe, qui peut être un lien symbolique vers l'exécutable approprié. Dans l'exemple ci-dessus, cela vous donne des informations beaucoup plus utiles que ps:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
/procfourniront toutes les informations sur un programme,exeseront un lien vers l'exécutable,cwdvers le répertoire de travail en cours, lefdrépertoire contient des liens vers des fichiers ouverts (y compris l'entrée, la sortie standard et l'erreur standard)