comm wydaje się skracać polecenie do 15 znaków. Użycie commandzamiast tego naprawia to.
Nemo
1
[Ubuntu 14.04.4 LTS] $ 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.
OmarOthman
3
Właściwie commpodaje nazwę command
pliku
45
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
Bądź ostrożny: OP wspomina o systemie UNIX. Nie wszystkie systemy UNIX implementują plan 9, podobnie jak plik specyficzny dla procesu. Twoja odpowiedź ogólnie dotyczy tylko Linuksa.
slhck 17.08.13
3
Chociaż to prawda, otagowali pytanie „linux”. Każdy, kto korzysta z systemu operacyjnego UNIX innego niż Linux, będzie przyzwyczajony do modyfikowania odpowiedzi w celu dopasowania do swoich potrzeb
Andrew White,
14
Aby uzyskać ścieżkę programu za pomocą określonego pid, możesz użyć:
To polecenie pomogło mi bardziej niż potrzebowałem, mam pełną linię procesu, który się rozpoczął. Biorąc pod uwagę proces Java, z pspoleceniem wszystko, co zobaczysz, jest po prostu java, ale pozostałe parametry zostaną wyświetlone w pełni za pomocą pmap.
Daniel Andrei Mincă
3
Możesz także użyć awk w połączeniu z ps
ps aux | awk '$2 == PID number for a process { print $0 }'
Jest to niestabilne, ponieważ wybrałoby również procesy, które zawierają numer w dowolnym miejscu ich polecenia. Spróbuj na przykład ps ax | grep 1sprawdzić, czy naprawdę zwraca initproces. (W moim przypadku zwraca 119 wierszy - co nie jest pożądane.)
slhck,
1
@slhck Zmodyfikowałem odpowiedź ... dzięki za informacje .. ps -p 1 -o comm = jest najlepszą opcją dla tego pytania.
Gangadhar,
Nie potrzebujemy dwóch przebiegów, aby zachować nagłówki, zamiast tego użyj 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 -ptak jest lepiej.
dave_thompson_085
3
Simmilar do slhck na odpowiedź , ale opierając się na operacje na plikach, zamiast wywołania polecenia:
[Ubuntu 14.04.4 LTS] cat /proc/1/comm=> init, not / sbin / init. Jego odpowiedź zawiera dłuższą wersję. Ale i tak +1.
OmarOthman
2
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.
Nie działa na BSD (może włączając MacOSX? Nie jestem pewien). Nawet tam, gdzie -e -fsą dostępne, grepmoże powodować wiele fałszywych dopasowań, np. grep 33Obejmuje 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 grepsam. Wszyscy (AFAIK) psmają -p, więc tylko ps -fp 33.
dave_thompson_085
0
Znajduję najłatwiejszą metodę za pomocą następującego polecenia:
ps
lubls -l /proc/$PID/exe
ps -fp PID
pokaże pełne polecenieOdpowiedzi:
We wszystkich systemach zgodnych z POSIX oraz w systemie Linux możesz użyć
ps
: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źródło
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
wykonując
Tutaj pid to pid, dla którego chcesz znaleźć nazwę
dla exmaple:
Aby znaleźć nazwę procesu używaną przez pid 2480, możesz użyć can
źródło
Aby uzyskać ścieżkę programu za pomocą określonego pid, możesz użyć:
alternatywnie możesz użyć:
źródło
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.Przykład:
źródło
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.
źródło
ps
poleceniem wszystko, co zobaczysz, jest po prostujava
, 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
przykład:
do wydrukowania HEAD LINE możesz użyć
źródło
ps ax | grep 1
sprawdzić, czy naprawdę zwracainit
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:
źródło
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.
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.
źródło
-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 tymgrep
sam. Wszyscy (AFAIK)ps
mają-p
, więc tylkops -fp 33
.Znajduję najłatwiejszą metodę za pomocą następującego polecenia:
źródło
ps -p${pid}
, spowoduje to wykrycie wielu fałszywych trafień - w tymgrep
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é
źródło