実行中のプロセスのPIDのリストを作成する必要があります。
これはスクリプトです。
ps
echo "fields are "
ps | cut -d' ' -f1
ps
展示
PID TTY TIME CMD
2168 pts/4 00:00:00 sh
2177 pts/4 00:00:00 mailx
5191 pts/4 00:00:00 sh
6494 pts/4 00:00:00 sh
6495 pts/4 00:00:00 ps
12154 pts/4 00:00:00 sh
12172 pts/4 00:00:00 mailx
15618 pts/4 00:00:00 bash
しかし、パイプを切る結果はただ
12154
12172
15618
答え1
問題は、cut
単一のスペース文字を区切り文字として使用することですが、列名と4桁のPIDが右揃えであるため、先頭のスペースが複数あり、空白行がcut
出力されます。
awk
別の方法は、これらの入力をよりよく処理することを使用することです。
ps | awk '{ print $1 }'
ps
特別な状況でマインドモンキーの答えより良い方法です。
答え2
完全なリスト:
ps -eo pid
またはあなたのプロセスのみ:
ps -o pid
答え3
3番目のオプションとして、以下を使用することもできますgrep
。
ps | grep -oP '^\s*\d+'
-P
Perl正規表現(\s
、\d
および+
)を有効にして、一致する行のうち一致する部分のみを印刷するように-o
します。grep