プロセス実行時間を秒単位で取得します。

プロセス実行時間を秒単位で取得します。

〜のようにプロセスがどれだけ長く実行されているかを確認するには?私はBusyBoxを使用してsh(代わりにbash)組み込みLinuxシステムでプロセスの実行時間(秒)を取得しようとしています。違いは、mm:ss形式ではなく純粋な秒が欲しいということです。

結果から解析できますが、mm:ssを秒に変換するpsことはできません。デバッグヘルプをexpr使用すると、set -vxコマンドが有効であることがわかりますが、expr構文エラーのため失敗します。コピーして貼り付けるとうまくいきます。

さらなる診断のためにこのコマンドを実行した後:

root@embedded:~# set -vx

私は次のように入力します:

root@embedded:~# $(/opt/bin/busybox ps -o pid,etime,time | grep 1156 | sed "s/ *[0-9]\+ \+\([0-9]\+\):\([0-9]\+\) .*/\/opt\/bin\/busybox expr \1 \\\* 60 + \2/")

そしてこのような答えを受けました:

$(/opt/bin/busybox ps -o pid,etime,time | grep 1156 | sed "s/ *[0-9]\+ \+\([0-9]\+\):\([0-9]\+\) .*/\/opt\/bin\/busybox expr \1 \\\* 60 + \2/")
+ /opt/bin/busybox ps -o pid,etime,time
+ grep 1156
+ sed s/ *[0-9]\+ \+\([0-9]\+\):\([0-9]\+\) .*/\/opt\/bin\/busybox expr \1 \\* 60 + \2/
+ /opt/bin/busybox expr 2 \* 60 + 03
expr: syntax error
root@embedded:~#

私もいくつかのステップ\の脱出を試みました''

*エスケープをexprコマンドラインに渡すにはどうすればよいですか?

ベストアンサー1

evalこの場合は役に立ちます...

~ $ $(echo expr 1 \\* 2)
+ echo expr 1 \* 2
+ expr 1 \* 2
expr: syntax error
~ $ eval $(echo expr 1 \\* 2)
+ echo expr 1 \* 2
+ eval expr 1 \* 2
+ expr 1 * 2
2

ただし、Linuxで検索する方が良いかもしれません/proc/$pid/stat

pid=1155
hz=$(getconf CLK_TCK)
uptime=$(awk '{print $1}' < /proc/uptime)
starttime=$(awk '{print $22}' < /proc/$pid/stat)
echo $(( ${uptime%.*} - $starttime / $hz ))

利用できない場合は、システムの(または)値を照会する必要があり/usr/bin/getconfます。ほとんどの場合、100と仮定できそうです。CLK_TCKUSER_HZ

おすすめ記事