- PR -

シェルスクリプトの処理時間

投稿者投稿内容
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-06-28 16:28
お世話になります。

bashでシェルスクリプトを作成しています。

そのシェルの中で起動されてから終了するまでの
処理時間(時分秒)を取得したいのですが
その方法が分からず悩んでいます。

やりたいこと↓

#!/bin/bash

START=開始時分秒をセット

・・・処理

END=終了時分秒をセット

TIME=開始時分秒と終了時分秒から処理時間を算出

echo "処理時間:${TIME}"

ご教授お願い致します。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-06-28 16:38
% time シェル
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-06-28 16:56
どもです。がると申します。
んっと…「Perlでそーゆープログラムを作成してみる」ってのは
どうでしょう?
秒単位でよいのかもしれませんが、その気になればマイクロ秒単位まで
取得が可能です :-P
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-06-28 17:15
早速のご返事ありがとうございます。

> % time シェル

スクリプト内で処理時間を計測したいので
time コマンドは難しいかもしれません。

>「Perlでそーゆープログラムを作成してみる」ってのは
>どうでしょう?

なるほど。Perlですね。
やはりシェルだけでは無理なのでしょうか?
う〜ん。。。
Nova
会議室デビュー日: 2005/06/28
投稿数: 1
投稿日時: 2005-06-28 17:21
はじめまして、初めての書込みです。

exprコマンドを使ってはどうでしょう。

時分秒はexprで秒にし、終了時間から開始時間をひく
expr ${END} - ${START}
で、結果をまた時分秒に戻す。

日をまたぐ可能性が無いなら簡単にできますよ。
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-06-28 17:46
引用:

exprコマンドを使ってはどうでしょう。


bashなんですから、
$(( 数式 ))
でも行けます。

特に理由がなければ、外部コマンドに頼らずに処理しちゃった方がいいと思います。

----
引用:

> % time シェル

スクリプト内で処理時間を計測したいので
time コマンドは難しいかもしれません。


時間を計測したい処理をシェルスクリプトにした上で、
timeを実行すればよいんじゃないかと。

[ メッセージ編集済み 編集者: Mattun 編集日時 2005-06-28 18:01 ]
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-06-28 17:50
exprと`date +%s` を使ってできました。
ありがとうございました。

#!/bin/bash

START=`date +%s`
・・・処理
END=`date +%s`

SS=`expr ${END} - ${START}`

HH=`expr ${SS} / 3600`
SS=`expr ${SS} % 3600`
MM=`expr ${SS} / 60`
SS=`expr ${SS} % 60`

echo "${HH}:${MM}:${SS}"
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-06-28 17:52
> $(( 数式 ))

なるほど、↑のような書き方もできるんですね。
勉強になりました。

ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)