Dans la plupart des cas, il suffit d'exécuter ps
est généralement suffisant, ainsi que vos drapeaux préférés pour permettre une large diffusion. Je penche pour ps -feww
mais les autres suggestions sont valables. Notez que si un programme a été lancé à partir de la base de données $PATH
vous ne verrez que le nom de l'exécutable, et non le chemin d'accès 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 la rubrique ps
peut être complètement écrasé 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 cela dans un fichier appelé "myprogram" et que je l'exécute :
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
Et ensuite, lancez 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 consulter 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