Nella maggior parte dei casi psè sufficiente solo correre , insieme ai flag preferiti per consentire un output ampio. Mi protendo verso ps -feww, ma gli altri suggerimenti qui funzioneranno. Nota che se un programma è stato avviato da qualcuno $PATH, vedrai solo il nome dell'eseguibile, non il percorso completo. Ad esempio, prova questo:
$ 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 notare che le informazioni visibili in pspossono essere completamente sovrascritte dal programma in esecuzione. Ad esempio, questo codice:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
Se lo compilo in un file chiamato "myprogram" e lo eseguo:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
E poi esegui ps, vedrò un nome di processo diverso:
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
Puoi anche guardare direttamente /proc/<pid>/exe, che può essere un link simbolico all'eseguibile appropriato. Nell'esempio sopra, questo ti dà molte più informazioni utili di ps:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
/procforniranno tutte le informazioni su un programma,exesaranno un link all'eseguibile,cwdalla directory di lavoro corrente, lafddirectory contiene collegamenti a file aperti (inclusi input standard, output ed errore standard)