ps:フォーマット(区切り記号と幅)

ps:フォーマット(区切り記号と幅)

列区切り記号を指定したい

ps -o "%a|%p"        # separator |

そして列幅

ps -o cmd:50,pid     # width 50 for cmd

存在する一つ注文する。可能ですか? ?

これは列の幅とは関係ありませんが、最後の列でなくてもコマンドの全長を持ちたいです。

答え1

-o コマンドは追加コマンドなので、複数を実行するだけです。

ps -a -o "cmd:50 " -o "|%p"
CMD                                               |  PID
/usr/lib/gnome-session/gnome-session-binary --auto| 4158

問題は、PIDが正しく整列しているため、PIDの周りに空白が生じることです。上から4158はパイプの後ろに空白があることがわかります。

答え2

完全なコマンドとPIDが必要です。このコマンドが最初に出てくるはずです。

cmd定義済みの順序(および)に従ってpid2列の出力を調整する必要があるため、
次のようになります。ps+sed 「いたずら」:

ps -ao "cmd:50,pid" | sed 's/./&|/51'

テスト出力:

CMD                                                |  PID
nano jq1 -c                                        | 6041
man ps                                             |13714
pager                                              |13725
ps -ao cmd:50,pid                                  |13950
sed s/./&|/51                                      |13951
python                                             |15345
bash -v                                            |16513
bash +v                                            |16645
top                                                |22426
awk -F| -v cmd=xmlstarlet ed -L -u "//Add/value[%d |31412
sh -c xmlstarlet ed -L -u "//Add/value[1]/@IP" -v  |31413
xmlstarlet ed -L -u //Add/value[1]/@IP -v 1.1.1.1  |31414

関連情報