Na maioria dos casos, apenas a execução de ps
é geralmente suficiente, junto com suas sinalizações favoritas para permitir uma saída ampla. Eu me inclino para ps -feww
, mas as outras sugestões aqui funcionarão. Observe que, se um programa foi iniciado com $PATH
de alguém, você só verá o nome do executável, não o caminho completo. Por exemplo, tente isto:
$ 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
É importante observar que as informações visíveis em ps
podem ser completamente sobrescritas pelo programa em execução. Por exemplo, este código:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
Se eu compilar isso em um arquivo chamado "myprogram" e executá-lo:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
E, em seguida, executar ps
, veremos um nome de processo 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
Você também pode olhar diretamente para /proc/<pid>/exe
, que pode ser um link simbólico para o executável apropriado. No exemplo acima, isso fornece informações muito mais úteis do que ps
:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp