Dalam kebanyakan kasus hanya menjalankan ps
biasanya cukup, bersama dengan bendera favorit Anda untuk memungkinkan keluaran luas. Saya condong ke arah ps -feww
, tetapi saran lain di sini akan berhasil. Perhatikan bahwa jika suatu program dimulai dari milik seseorang $PATH
, Anda hanya akan melihat nama yang dapat dieksekusi, bukan path lengkap. Misalnya, coba ini:
$ 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
Penting untuk dicatat bahwa informasi yang terlihat di ps
dapat sepenuhnya ditimpa oleh program yang sedang berjalan. Misalnya, kode ini:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
Jika saya mengompilasi ini menjadi file yang disebut "myprogram" dan jalankan:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
Dan kemudian jalankan ps
, saya akan melihat nama proses yang berbeda:
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
Anda juga dapat melihat secara langsung /proc/<pid>/exe
, yang mungkin merupakan symlink ke executable yang sesuai. Dalam contoh di atas, ini memberi Anda informasi yang jauh lebih berguna daripada ps
:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
/proc
akan memberikan semua informasi tentang suatu program,exe
akan menjadi tautan ke executable,cwd
ke direktori kerja saat ini,fd
direktori berisi tautan untuk membuka file (termasuk input standar, output dan kesalahan standar)