Pokaż uruchomione procesy z nazwami plików?

12

Używam kit do połączenia mojego serwera linux, w którym znajdują się moje strony. Mogę uruchomić

# ps aux | less

aby pokazać uruchomione procesy. Ale chcę wyświetlić, które pliki uruchamiają te procesy?

Próbowałem też

# ps aux | grep <pid>

Ale uzyskanie tego błędu:

-bash: syntax error near unexpected token `newline'

Jaki jest właściwy sposób to zrobić?

tshepang
źródło
4
za grep <pid>, powinieneś zastąpić <pid>faktycznym identyfikatorem procesu (jest to liczba). <pid>jest tylko symbolem zastępczym, a nie czymś, co powinieneś pisać.
Ben Voigt,

Odpowiedzi:

13

ps aux | grep <pid>nie jest poleceniem powłoki. Notacja <pid>jest powszechną konwencją oznaczającą „umieść tam PID”. Na przykład, jeśli PID to 1234, uruchomiłbyś się ps aux | grep 1234. To nie jest bardzo przydatne polecenie, możesz równie dobrze uruchomić ps u 1234.

Twoje pytanie nie jest bardzo jasne. Co rozumiesz przez „z nazwami plików”? Jeśli chcesz zobaczyć, jaki plik wykonywalny działa proces 1234:

ls -l /proc/1234/exe

Jeśli chcesz zobaczyć, jakie pliki otworzył ten proces:

ls -l /proc/1234/fd

Jeśli chcesz zobaczyć pełny wiersz poleceń z argumentami:

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

Jeśli wolisz używać poleceń, lsof -p1234pokazuje wszystkie pliki otwarte przez proces. ps uww 1234pokazuje różne informacje o procesie 1234, w tym pełną linię poleceń.

Gilles „SO- przestań być zły”
źródło
5

spróbuj wykonać następujące czynności:

ps -ef
ennuikiller
źródło
3

Przede wszystkim ps aux | grep <PID>jest przydatny, gdy chcesz pokazać szczegóły konkretnego procesu, którego PID(Identyfikator procesu) jest reprezentowany przez <PID>.

Na przykład ( ps aux | grep 'firefox\|USER'oznacza drukowanie tylko linii, które zawierają firefoxlub 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

Zatem PID dla mojej firefoxinstancji to 9021. Aby użyć komendy, którą próbujesz uruchomić, zastąpiłbym <PID>9021:

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

Teraz nie jestem pewien, co rozumiesz przez „wyświetl, które pliki uruchamiają te procesy”. Jeśli masz na myśli wyświetlanie plików używanych przez te procesy, ps auxjest to jeden ze sposobów. Powiedzmy, że otworzyłem plik /usr/share/doc/nano/faq.htmlza pomocą tego polecenia:

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

Widziałem, który plik firefoxzostał otwarty za pomocą 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

Otwarty plik jest pokazany jako jeden z argumentów przekazanych do Firefoxa. Zauważ, że PID jest inny (jest teraz 31763zamiast 9021), ponieważ każdy uruchomiony program ma swój własny unikalny PID.


Innym przydatnym poleceniem jest top. Jeśli uruchomisz go z -cprzełącznikiem, wyświetli on argumenty przekazane do polecenia, a wraz z -u <your user>nim pokaże tylko procesy rozpoczęte przez twoją nazwę użytkownika (zastąp <your user>rzeczywistą nazwą użytkownika):

top -c -u terdon

To jest wynik na moim komputerze lokalnym (użytkownik terdonuruchamia tylko dwa procesy):

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                          

Aby uzyskać wyjaśnienie informacji przedstawionych przez top, zobacz moją odpowiedź na powiązane pytanie dotyczące SU.

terdon
źródło
0

niektóre postacie w skorupie są specjalnego przeznaczenia, takie jak <>? „; ...

grep PID nie jest użyteczny, ponieważ PID jest identyfikatorem procesu, a grep znajdzie podobną liczbę ...


źródło