En la mayoría de los casos, solo correr pses suficiente, junto con sus banderas favoritas para permitir una salida amplia. Me inclino hacia ps -feww, pero las otras sugerencias aquí funcionarán. Tenga en cuenta que si un programa se inició desde el de alguien $PATH, solo verá el nombre del ejecutable, no la ruta completa. Por ejemplo, intente esto:
$ 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
Es importante tener en cuenta que el psprograma en ejecución puede sobrescribir completamente la información visible en . Por ejemplo, este código:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
Si compilo esto en un archivo llamado "myprogram" y lo ejecuto:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
Y luego ejecutar ps, veré un nombre de proceso diferente:
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
También puede mirar directamente /proc/<pid>/exe, que puede ser un enlace simbólico al ejecutable apropiado. En el ejemplo anterior, esto le brinda mucha más información útil que ps:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
/procproporcionarán toda la información sobre un programa,exeserán un enlace al ejecutable,cwdal directorio de trabajo actual, elfddirectorio contiene enlaces a archivos abiertos (incluyendo entrada estándar, salida y error estándar)