Jeśli znam numer PID procesu, jak mogę uzyskać jego nazwę?
Jeśli mam numer PID procesu (na maszynie UNIX), jak mogę uzyskać nazwę powiązanego z nim procesu?
Co muszę zrobić?
Jeśli mam numer PID procesu (na maszynie UNIX), jak mogę uzyskać nazwę powiązanego z nim procesu?
Co muszę zrobić?
Na wszystkich systemach zgodnych z POSIX-em, a także z Linuksem, możesz użyć ps
:
ps -p 1337 -o comm=
Tutaj proces jest wybierany przez jego PID z -p
. Opcja -o
określa format wyjściowy, comm
oznacza nazwę polecenia.
Zobacz także: ps
- The Open Group Base Specifications Issue 6
Możesz znaleźć nazwę procesu lub polecenie używane przez proces-id lub pid z
/proc/pid/cmdline
cat /proc/pid/cmdline
Tutaj pid jest pidem, 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żywanego przez pid 2480 używasz can
# cat /proc/2480/cmdline
gnome-terminal
Aby uzyskać ścieżkę programu używając pewnego pida można użyć:
ps ax|egrep "^ [PID]"
alternatywnie można użyć:
ps -a [PID]
Możesz użyć pmap. Szukam PID 6649. I obcinam dodatkowe szczegóły procesu.
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
# 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
Podobnie jak w przypadku Odpowiedź slhck'a , ale poleganie na operacjach na plikach zamiast wywoływania komend:
MYPID=1
cat "/proc/$MYPID/comm"
Możesz również 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 drukowania LINII GŁÓWNEJ 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
O dziwo, nikt nie wspomniał o opcji -f (pełne polecenie) dla ps. Lubię używać jej z -e (wszystko) i potokować wyniki do grepu, żebym mógł zawęzić swoje poszukiwania.
ps -ef | grep <PID>
Jest to również bardzo przydatne przy oglądaniu pełnych komend, które ktoś uruchamia i które zabierają dużo zasobów w twoim systemie. Pokaże Ci to opcje i argumenty przekazane do komendy.
Najłatwiej jest mi być z komendą:
ps -awxs | grep pid
zrobił prosty skrypt do wyszukiwania PID i używania w skryptach bash… używaj ostrożnie!
Zrzut ekranu:
André