Odpowiedzi:
We wszystkich systemach zgodnych z POSIX oraz w systemie Linux możesz użyć ps
:
ps -p 1337 -o comm=
Tutaj proces jest wybierany przez PID za pomocą -p
. -o
Opcja określa format wyjściowy, comm
czyli nazwę polecenia.
Zobacz także: ps
- Podstawowa specyfikacja grupy otwartej, wydanie 6
command
zamiast tego naprawia to.
$ ps -p 1 -o comm=
init $ ps -p 1 -o command=
/ sbin / init; co oznacza, że nie ma około 15 znaków, może tylko nazwa pliku binarnego vs. pełna ścieżka.
comm
podaje nazwę command
Możesz znaleźć nazwę procesu lub komendę używaną przez id procesu lub pid z
/proc/pid/cmdline
wykonując
cat /proc/pid/cmdline
Tutaj pid to pid, dla którego chcesz znaleźć nazwę
dla exmaple:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Aby znaleźć nazwę procesu używaną przez pid 2480, możesz użyć can
# cat /proc/2480/cmdline
gnome-terminal
Aby uzyskać ścieżkę programu za pomocą określonego pid, możesz użyć:
ps ax|egrep "^ [PID]"
alternatywnie możesz użyć:
ps -a [PID]
ps -a
wyświetla listę wszystkich procesów powiązanych z terminalem, nie wymaga żadnych danych wejściowych.
ps
wersji, procps version 3.2.7
działa poprawnie.
# ls -la /proc/ID_GOES_HERE/exe
Przykład:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
readlink /proc/1337/exe
. readlink - drukuj rozstrzygnięte dowiązania symboliczne lub kanoniczne nazwy plików.
Możesz użyć pmap. Szukam PID 6649. I odcinam dodatkowe szczegóły procesu.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
ps
poleceniem wszystko, co zobaczysz, jest po prostu java
, ale pozostałe parametry zostaną wyświetlone w pełni za pomocą pmap
.
Możesz także użyć awk w połączeniu z ps
ps aux | awk '$2 == PID number for a process { print $0 }'
przykład:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
do wydrukowania HEAD LINE możesz użyć
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
ps ax | grep 1
sprawdzić, czy naprawdę zwraca init
proces. (W moim przypadku zwraca 119 wierszy - co nie jest pożądane.)
ps aux | awk 'NR==1 || $2==PID'
- i nie musimy mówić, {print $0}
ponieważ jest to ustawienie domyślne. Ale jak skomentowałeś, i -p
tak jest lepiej.
Simmilar do slhck na odpowiedź , ale opierając się na operacje na plikach, zamiast wywołania polecenia:
MYPID=1
cat "/proc/$MYPID/comm"
cat /proc/1/comm
=> init, not / sbin / init. Jego odpowiedź zawiera dłuższą wersję. Ale i tak +1.
Zaskakujące, że nikt nie wspomniał o opcji -f (pełne polecenie) dla ps. Lubię używać go z -e (wszystko) i przesyłać wyniki do grep, aby zawęzić wyszukiwanie.
ps -ef | grep <PID>
Jest to również bardzo przydatne do przeglądania pełnych poleceń uruchamianych przez osobę, które zajmują dużo zasobów w systemie. Spowoduje to wyświetlenie opcji i argumentów przekazanych do polecenia.
-e -f
są dostępne, grep
może powodować wiele fałszywych dopasowań, np. grep 33
Obejmuje pid = 933 lub 339, ppid = 33 lub 933 lub 339, wykorzystany czas 33 sekund lub 33 minut, lub nazwa programu lub argument zawierający 33 - w tym grep
sam. Wszyscy (AFAIK) ps
mają -p
, więc tylko ps -fp 33
.
Znajduję najłatwiejszą metodę za pomocą następującego polecenia:
ps -awxs | grep pid
ps -p${pid}
, spowoduje to wykrycie wielu fałszywych trafień - w tym grep
samego siebie.
stworzyłem prosty skrypt, aby znaleźć PID i używać go w skryptach bash ...
używaj z rozwagą !!
Zrzut ekranu: http://pastebin.com/Cm9YH67U
André
ps
lubls -l /proc/$PID/exe