Hiển thị các quy trình đang chạy với tên tệp (s)?


12

Tôi đang sử dụng putty để kết nối máy chủ linux có trang web của tôi. Tôi có thể chạy

# ps aux | less

để hiển thị các quy trình đang chạy. Nhưng tôi muốn hiển thị tập tin nào chạy các quá trình này?

Tôi cũng đã thử

# ps aux | grep <pid>

Nhưng nhận được lỗi này:

-bash: syntax error near unexpected token `newline'

Cách chính xác để làm điều đó là gì?


4
trong grep <pid>, bạn phải thay thế <pid>bằng id tiến trình thực tế của bạn (đó là một số). <pid>chỉ là một trình giữ chỗ, không phải là thứ bạn thực sự nên gõ.
Ben Voigt

Câu trả lời:


13

ps aux | grep <pid>không phải là một lệnh shell. Ký hiệu <pid>này là một quy ước phổ biến có nghĩa là đưa đặt bộ vi xử lý vào đó. Ví dụ: nếu PID là 1234, bạn sẽ chạy ps aux | grep 1234. Đây không phải là một lệnh rất hữu ích, bạn cũng có thể chạy ps u 1234.

Câu hỏi của bạn không rõ ràng lắm. Bạn có ý nghĩa gì với những người có tên tập tin là gì? Nếu bạn muốn xem những gì thực thi quy trình 1234 đang chạy:

ls -l /proc/1234/exe

Nếu bạn muốn xem những tập tin mà quá trình đã mở:

ls -l /proc/1234/fd

Nếu bạn muốn xem dòng lệnh đầy đủ với các đối số:

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

Nếu bạn thích sử dụng các lệnh, lsof -p1234hiển thị tất cả các tệp mà quá trình đã mở. ps uww 1234hiển thị nhiều mẩu thông tin khác nhau về quy trình 1234 bao gồm dòng lệnh đầy đủ.



3

Trước hết, ps aux | grep <PID>rất hữu ích khi bạn muốn hiển thị chi tiết cho một quy trình cụ thể có PID(Mã định danh quy trình) được đại diện bởi <PID>.

Ví dụ: ( ps aux | grep 'firefox\|USER'có nghĩa là chỉ in các dòng có đường viền firefoxhoặc 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

Vì vậy, firefoxví dụ của PID là 9021. Vì vậy, để sử dụng lệnh bạn đang cố chạy, tôi sẽ thay thế <PID>bằng 9021:

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

Bây giờ, tôi không chắc ý của bạn là gì khi "hiển thị tập tin nào đang chạy các quy trình này". Nếu bạn có nghĩa là hiển thị những tập tin mà các quá trình này đang sử dụng, ps auxlà một cách để làm như vậy. Nói rằng tôi đã mở tệp /usr/share/doc/nano/faq.htmlbằng lệnh này:

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

Tôi có thể xem tập tin nào firefoxđã mở bằng cách sử dụng 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

Tệp đã mở được hiển thị dưới dạng một trong các đối số được truyền cho firefox. Lưu ý rằng PID là khác nhau (bây giờ 31763thay vì 9021) đó là bởi vì mọi chương trình đang chạy đều có một bộ điều khiển riêng.


Một lệnh hữu ích khác là top. Nếu bạn chạy nó bằng công -ctắc, nó sẽ hiển thị các đối số được truyền cho một lệnh và với -u <your user>nó sẽ chỉ hiển thị các quy trình được bắt đầu bằng tên người dùng của bạn (thay thế <your user>bằng tên người dùng thực tế của bạn):

top -c -u terdon

Đây là đầu ra trên máy cục bộ của tôi (người dùng terdonchỉ đang chạy hai quy trình):

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                          

Để biết giải thích về thông tin được hiển thị bởi top, hãy xem câu trả lời của tôi cho một câu hỏi liên quan trên SU.


0

một số ký tự dưới vỏ được dành cho mục đích đặc biệt như <>? "; ...

grep PID không hữu ích vì PID là id quá trình và grep sẽ tìm thấy số tương tự ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.