ps 出力フォーマットを使用:
ps -A -o pid
コマンドの出力フォーマットは最良のオプションです。 o オプションは、出力のフォーマットを制御します。以下にいくつかの引数をリストしました。残りについては「man ps」を参照してください (複数を使用するには -o pid,cmd,flags
になります) )。
KEY LONG DESCRIPTION
c cmd simple name of executable
C pcpu cpu utilization
f flags flags as in long format F field
g pgrp process group ID
G tpgid controlling tty process group ID
j cutime cumulative user time
J cstime cumulative system time
k utime user time
o session session ID
p pid process ID
列を取得するには、awk または Cut のほうがよいでしょう:
通常、最初の列を選択するための正規表現は必要ありません。最初の列を切り取るためにパイプするか awk する必要があります:
ps ax | awk '{print $1}'
最適ではないにしても、正規表現はオプションです:
正規表現を使用する場合は、次のようになります:
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
$1 は、括弧内に一致したものだけを出力します。 ^ を行頭に固定します。スペース アスタリスクは、数字の前にオプションのスペース文字を許可することを意味します。 [0-9]+ は 1 つ以上の数字を意味します。しかし、この特定のタスクには正規表現をお勧めしません。なぜですか? :-)
ps ax | awk '{ print $1; }'
-o を使用します カスタム形式の出力に切り替える
ps -o pid
あなたが明示的に尋ねたように、sedを使用する悪い方法は
ps -ax | sed 's#^\( *[0-9]\+\) .*$#\1#'