解決策 1:
ps -ef | egrep "GMC|PID"
「GMC」と ps
を置き換えます 必要に応じて切り替えます。
出力例:
[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
解決策 2:
geekosaur のおかげで、別のコマンドではなく、要求に応じてこのコマンドを使用したいと思います:
ps -ef | head -1; ps -ef | grep "your-pattern-goes-here"
トリッキーなのは、「;」を利用することです。コマンドをチェーンするためにシェルによってサポートされています。
解決策 3:
2 列目はプロセス ID です。 4 番目は、プロセスが作成されたときです (これは通常、プログラムが開始されたときですが、常にではありません。execve()
を考慮してください)。 と友達); 6 番目は、消費された CPU 時間の量です。つまり、8 日間実行されており、約 7 日間の CPU 時間を使用しており、これは私が懸念していることです。
同じ呼び出しでヘッダーを取得することは、せいぜいトリッキーです。別の ps | head -1
を実行するだけです . ps
の使用を検討してください。 独自の選択方法または pgrep
のようなもの grep
の代わりに 、実際にはヘッダーを渡すようには設計されていません。
解決策 4:
egrep ソリューションはシンプルで便利ですが、もちろん、常に「PID」を含むヘッダーに依存し (ただし、妥当な仮定以上です)、同じ文字列は他の場所では発生しません。あなたのニーズにはこれで十分だと思いますが、代替手段が必要な場合は sed があります。
Sed では、「最初の行を印刷し、次にパターンを含む任意の行を印刷する」と言うことができます。例:
ps auxwww | sed -n '1p; /PROCESS_NAME_TO_SEARCH/p;'
/sed -n/d;
を追加 sed 自体を除外するには:
ps auxwww | sed -n '1p; /sed -n/d; /PROCESS_NAME_TO_SEARCH/p;'
解決策 5:
もっと簡単な方法:ps -ef | { head -1; grep GMC; }
数字をヘッダーが表示される行数に置き換えます。