これにより、最初の時間が秒に変換されます。
ps -p $PROCID -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
例として、psコマンドは以下を生成します。
$ ps -p 5403 -o cputime,etimes
TIME ELAPSED
01:33:38 1128931
awk
コマンドが処理すると戻ります。
ps -p 5403 -o cputime,etimes | awk -F'[: ]+' '/:/ {t=$3+60*($2+60*$1); print t,$NF}'
5618 1128931
説明
-F'[: ]+'
これは、コロンとスペースの両方をフィールド区切り文字として扱うようにawkに指示します。これにより、時間、分、秒が別々のフィールドとして表示されます。
/:/ {t=$3+60*($2+60*$1); print t,$NF}
初期値/:/
は、コロンを含む行でのみ動作するようにコードを制限します。これにより、ヘッダー行が削除されます。秒数は、時間、分、秒からを介して計算されt=$3+60*($2+60*$1)
ます。の結果の値t
は、経過時間とともに印刷されます。
取り扱い日
次のようにps
日、時間、分、秒を生成する場合:
2-03:01:33
次に、代わりに次のコードを使用します。
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ {t=$4+60*($3+60*($2+24*$1)); print t,$NF}'
出力に日を追加する場合としない場合は、次の組み合わせコマンドを使用します。
ps -p $PROCID -o cputime,etimes | awk -F'[-: ]+' '/:/ && NF==5 { t=$4+60*($3+60*($2+24*$1)); print t,$NF} /:/ && NF==4 {t=$3+60*($2+60*$1); print t,$NF}'