Řešení 1:
ps -ef | egrep "GMC|PID"
Nahraďte "GMC" a ps
přepne podle potřeby.
Příklad výstupu:
[email protected]:~$ ps -ef | egrep "disk|PID"
UID PID PPID C STIME TTY TIME CMD
paremh1 12501 12466 0 18:31 pts/1 00:00:00 egrep disk|PID
root 14936 1 0 Apr26 ? 00:02:11 /usr/lib/udisks/udisks-daemon
root 14937 14936 0 Apr26 ? 00:00:03 udisks-daemon: not polling any devices
Řešení 2:
Díky geekosaurovi bych pro vaše požadavky rád použil tento příkaz, spíše než samostatný příkaz:
ps -ef | head -1; ps -ef | grep "your-pattern-goes-here"
Záludné je použít ";" podporované shellem k řetězení příkazu.
Řešení 3:
Druhý sloupec je id procesu; 4. je, když byl proces vytvořen (toto je obvykle čas, kdy se váš program spustil, ale ne vždy; zvažte execve()
a přátelé); 6. je množství spotřebovaného času CPU. Takže to běží 8 dní a využívá téměř 7 dní CPU, což bych považoval za znepokojivé.
Získání záhlaví ve stejném vyvolání je přinejlepším složité; Udělal bych jen samostatný ps | head -1
. Můžete zvážit použití ps
vlastní metody výběru nebo něco jako pgrep
místo grep
, který ve skutečnosti není navržen tak, aby procházel záhlavími.
Řešení 4:
Řešení egrep je jednoduché a užitečné, ale samozřejmě závisíte na tom, aby hlavička vždy obsahovala 'PID' (více než rozumný předpoklad) a stejný řetězec se nevyskytoval jinde. Hádám, že to pro vaše potřeby stačí, ale pro případ, že by někdo chtěl alternativu, je tu sed.
Sed vám umožní říct "vytisknout první řádek, pak libovolný řádek obsahující vzor". Například:
ps auxwww | sed -n '1p; /PROCESS_NAME_TO_SEARCH/p;'
Přidejte /sed -n/d;
k odfiltrování sed:
ps auxwww | sed -n '1p; /sed -n/d; /PROCESS_NAME_TO_SEARCH/p;'
Řešení 5:
jednodušší alternativa:ps -ef | { head -1; grep GMC; }
nahraďte číslo počtem řádků, na kterých se zobrazuje vaše záhlaví.