を取得するためにUNIXで2回を減算する私はautosysジョブの完了時間を計算したい:どのようautosysジョブの完了時間
私は、ファイル内のジョブのステータスの下にあります。
$cat rough
abc_why_the_infra_dnjob 10/05/2017 10:41:36 10/05/2017 12:52:02 SU
abc_why_the_avloqhk_dnjob 10/05/2017 09:53:36 10/05/2017 10:33:03 SU
abc_why_the_avlogsg_dnjob 10/05/2017 10:33:14 10/05/2017 10:41:01 SU
abc_why_the_avalokin_dnjob 10/05/2017 09:37:36 10/05/2017 09:53:06 SU
abc_why_the_mastercard_dnjob 10/05/2017 13:29:36 10/05/2017 14:21:02 SU
abc_why_the_tcs_dnjob 10/05/2017 03:13:36 10/05/2017 03:22:02 SU
abc_why_the_cogni_dnjob 10/05/2017 09:20:36 10/05/2017 09:37:02 SU
abc_why_the_dnjob 10/05/2017 03:41:36 10/05/2017 04:08:02 SU
そしてIそれを計算するために、以下のスクリプトを書いた:
$ cat sod.sh
#!/bin/bash
number=`cat rough| wc -l`
for i in `seq 1 $number`
do
job_name=`awk -F' ' '{print $1}' rough | sed -n "$i p"`
START_DATE=`awk -F' ' '{print $2}' rough | sed -n "$i p"`
END_DATE=`awk -F' ' '{print $4}' rough | sed -n "$i p"`
START_TIME=`awk -F' ' '{print $3}' rough | sed -n "$i p"`
END_TIME=`awk -F' ' '{print $5}' rough | sed -n "$i p"`
if [[ $START_DATE == $END_DATE ]]
then
T1=`date --date="${END_DATE} ${END_TIME}" "+%s"`
T2=`date --date="${START_DATE} ${START_TIME}" "+%s"`
TIME_DIFFERENCE=`expr $T2 - $T1`
COMPLITION_TIME=`date -d "@${TIME_DIFFERENCE}" "+%H:%M:%S"`
echo $COMPLITION_TIME
fi
done
出力:
$./sod.sh
03:19:34
04:50:33
05:22:13
05:14:30
04:38:34
05:21:34
05:13:34
05:03:34
私のクエリは今:あなたは私を提案することができ、出力が正しくありません。 私のような正しい答えを期待しています:最初のジョブに 2時11分を>>
day1で23:04:59、day2で00:34:31で終了するジョブを取得したことはありますか?あなたのスクリプトは非常に非効率です。あなたは一つの 'awk'スクリプトでデータを処理することができます。 –
いいえJonathan、これらのジョブは午前6時から始まり、午後6時(IST)より前に完了し、これらのジョブは再使用ファイルジョブ(前日のファイル)を使用しているため、2日間の組み合わせで長時間実行する可能性はありません。 –
@Jonathan、私は長い変電所 'expr $ H2 - $ H1'、' expr $ M2 - $ M1'、 'expr $ S2 - $ S'のように、時間の単位をunixでどのように引くことができるのか不思議ですon .. –