topの出力をpsの開始時間とマージしたいです。

topの出力をpsの開始時間とマージしたいです。

実行中の複数のサービスとtopを使用して現在の状態を表示するbashスクリプトがあります。

top -b -n1 -p `pgrep -f "proc1|proc2|proc3|proc4|proc5" | 
tr '\n' ',' |               # replace the newlines in the pid list with commas
sed 's/,$//g'` |            # remove the trailing comma and submit to top
grep -vx '.*sed' |          # From the top output: remove the entry for sed
sed 1,6d |                  # and remove the first 6 lines of top

生産する

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    660 user1     20   0 5800588 658868  39384 S   0.0   4.3   0:47.72 proc1
    718 user1     20   0 2089772  41068  25032 S   0.0   0.3   0:00.82 proc2
    722 user1     20   0 1046316  34172  25000 S   0.0   0.2   0:02.85 proc3
    725 user1     20   0  833716  23376  18404 S   0.0   0.2   0:00.21 proc4
    729 user1     20   0 2369604 108084  34292 S   0.0   0.7   0:02.76 proc5

次に、各 pid を取得して 'ps -p <pid> -o start' に渡し、出力をその行に挿入して以下を生成しようとします。

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+   STARTED COMMAND
    660 user1     20   0 5800588 658868  39384 S   0.0   4.3   0:47.72  08:56:23 proc1
    718 user1     20   0 2089772  41068  25032 S   0.0   0.3   0:00.82  08:56:24 proc2
    722 user1     20   0 1046316  34172  25000 S   0.0   0.2   0:02.85  10:27:41 proc3
    725 user1     20   0  833716  23376  18404 S   0.0   0.2   0:00.21  08:56:27 proc4
    729 user1     20   0 2369604 108084  34292 S   0.0   0.7   0:02.76  08:56:29 proc5

awkを使用してpidを抽出できることを知っていますが、どのように出力をマージ/挿入しますか?

答え1

私はそれについて考えた。私はまた、pgrepの-dスイッチが改行をコンマに置き換えることを防ぐことを発見しました。

    echo "    PID USER      VIRT      RES      SHR  %CPU  %MEM     TIME+  START COMMAND"
    top -b -n1 -p `pgrep -d , -f "proc1|proc2|proc3|proc4|proc5"` | 
    sed 1,7d |                                      # and remove the first 6 lines of top
    awk 'BEGIN { OFS="\t" } { command=sprintf("ps -o stime= %s", $1);  command | getline time; close(command); 
        printf("%7s %-10s %8s %8s %8s %5s %5s %9s %6s %s\n", $1, $2, $5, $6, $7, $9, $10, $11 , time, $12) }'

関連情報