Tampilkan proses yang sedang berjalan dengan nama file?


12

Saya menggunakan dempul untuk menghubungkan server linux saya di mana situs saya berada. Saya dapat menjalankan

# ps aux | less

untuk menunjukkan proses yang sedang berjalan. Tapi saya ingin menampilkan file mana yang menjalankan proses ini?

Saya juga sudah mencoba

# ps aux | grep <pid>

Tetapi mendapatkan kesalahan ini:

-bash: syntax error near unexpected token `newline'

Apa cara yang benar untuk melakukannya?


4
di grep <pid>, Anda seharusnya mengganti <pid>dengan id proses Anda yang sebenarnya (ini adalah angka). <pid>hanyalah pengganti, bukan sesuatu yang harus Anda ketik.
Ben Voigt

Jawaban:


13

ps aux | grep <pid>bukan perintah shell. Notasi <pid>adalah konvensi umum yang berarti "letakkan PID di sana". Misalnya, jika PID 1234, Anda akan menjalankan ps aux | grep 1234. Ini bukan perintah yang sangat berguna, Anda mungkin juga menjalankannya ps u 1234.

Pertanyaan Anda tidak terlalu jelas. Apa yang Anda maksud dengan "dengan nama file"? Jika Anda ingin melihat apa yang dapat dieksekusi proses 1234 berjalan:

ls -l /proc/1234/exe

Jika Anda ingin melihat file apa yang telah dibuka proses:

ls -l /proc/1234/fd

Jika Anda ingin melihat baris perintah lengkap dengan argumen:

tr '\0' '\n' </proc/1234/cmdline

Jika Anda lebih suka menggunakan perintah, lsof -p1234tunjukkan semua file yang prosesnya telah buka. ps uww 1234menunjukkan berbagai informasi tentang proses 1234 termasuk baris perintah penuh.



3

Pertama-tama, ps aux | grep <PID>berguna ketika Anda ingin menunjukkan detail untuk proses tertentu yang PID(Pengidentifikasi Proses) diwakili oleh <PID>.

Misalnya ( ps aux | grep 'firefox\|USER'berarti hanya mencetak garis yang mengandung firefoxatau USER):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

Jadi, PID untuk firefoxinstance saya adalah 9021. Jadi, untuk menggunakan perintah yang Anda coba jalankan, saya akan ganti <PID>dengan 9021:

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

Sekarang, saya tidak yakin apa yang Anda maksud dengan "menampilkan file mana yang menjalankan proses ini". Jika Anda bermaksud menampilkan file mana yang digunakan proses ini, ps auxadalah salah satu cara untuk melakukannya. Katakanlah saya telah membuka file /usr/share/doc/nano/faq.htmlmenggunakan perintah ini:

 firefox /usr/share/doc/nano/faq.html 

Saya bisa melihat file mana yang firefoxdibuka menggunakan ps:

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

File yang dibuka ditampilkan sebagai salah satu argumen yang diteruskan ke firefox. Perhatikan bahwa PID berbeda (sekarang 31763alih-alih 9021) itu karena setiap program yang berjalan memiliki PID uniknya sendiri.


Perintah lain yang bermanfaat adalah top. Jika Anda menjalankannya dengan -csakelar, ia akan menampilkan argumen yang diteruskan ke perintah, dan dengan -u <your user>itu hanya akan menunjukkan proses yang dimulai dengan nama pengguna Anda (ganti <your user>dengan nama pengguna Anda yang sebenarnya):

top -c -u terdon

Ini adalah output pada mesin lokal saya (pengguna terdonhanya menjalankan dua proses):

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

Untuk penjelasan tentang informasi yang ditunjukkan oleh top, lihat jawaban saya untuk pertanyaan terkait pada SU.


0

beberapa karakter di bawah shell adalah untuk tujuan khusus seperti <>? "; ...

grep PID tidak berguna karena PID adalah id proses dan grep akan menemukan numerik yang sama ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.