Řešení 1:
pgrep Možnosti výstupu jsou značně omezené. Téměř jistě jej budete muset poslat zpět prostřednictvím ps pro získání důležitých informací. Můžete to zautomatizovat pomocí funkce bash ve vašem ~/.bashrc .
function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }
Poté zavolejte příkaz pomocí.
ppgrep <pattern>
Řešení 2:
Kombinovat pgrep s ps pomocí xargs !
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
Zkuste například
pgrep -u user | xargs ps -f -p
získat úplný seznam procesů user . Možnost -u user limity pgrep zadanému uživateli (jako číslo nebo jméno), zatímco ps možnosti -f -p vyžádejte si výpis plného formátu pro vybraný PID.
Je fajn, že si necháte první řádek s názvy sloupců. grep vždy odstraní názvy sloupců.
Řešení 3:
Následující vám poskytne pouze PID + celý příkazový řádek. Pro "všechny informace ps ano“, viz další odpovědi...
Většina linuxů používá procps-ng. Od 3.3.4 (vydáno v roce 2012), pgrep -a (--list-full ) zobrazí celý příkazový řádek.
Poznámka:Ve výchozím nastavení pgrep odpovídá pouze vzoru, který zadáte, se jménem spustitelného souboru. Pokud chcete porovnat s celým příkazovým řádkem (jako grepping ps), přidejte -f (--full ).
Ve starších verzích (včetně původního projektu procps) -l možnost zobrazila informace, ale její chování se lišilo:
pgrep -flporovnal vzor s úplným příkazovým řádkem a ukázal celý příkazový řádek.pgrep -lsamotný odpovídal pouze názvu spustitelného souboru a zobrazil pouze název spustitelného souboru.
Pokud nechcete úplnou shodu, nemůžete vidět celý příkazový řádek :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]
Nejste si jisti, jaký kód *BSD používá, ale jejich manuálová stránka dokumentuje starý -fl chování.
Bohužel nemůžete použít ani -fl přenosné - v nejnovějším procps-ng, -f (--list-name ) vždy vytiskne pouze název spustitelného souboru.
Řešení 4:
Linux
Pro GNU verzi pgrep long + fuzzy výstup je dosažen s -af a řetězec musí rozlišovat malá a velká písmena (tj. není zde možnost rozlišovat malá a velká písmena ).
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
Manuální stránka:
-a, --list-full
List the full command line as well as the process ID. (pgrep only.)
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
MacOS
Na OSX (a odvozeně i na BSD) -l (dlouhý výstup ) v kombinaci s -f (shoda s úplnými seznamy argumentů ) zobrazí celý příkaz (-i přidává rozlišení malých a velkých písmen):
$ pgrep -fil ssh
OUTPUT:
33770 ssh: [email protected] [mux] t
Manuová stránka:
-l Long output. For pgrep, print the
process name in addition to the
process ID for each matching
process. If used in conjunction
with -f, print the process ID and
the full argument list for each
matching process. For pkill, dis-
play the kill command used for
each process killed.
Řešení 5:
Použijte volbu -v pro grep - vrátí vše, kromě požadovaného vzoru.
ps -ef | grep <process> | grep -v grep