Je veux calculer le temps d'achèvement pour un travail AutoSys:Comment supprimer deux fois Unix pour obtenir le temps d'achèvement pour le travail AutoSys
J'ai ci-dessous l'état de l'emploi dans le fichier:
$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
Et je a écrit le scénario ci-dessous pour le calculer:
$ 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
Sortie:
$./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
Ma Recherche maintenant: La sortie est incorrecte peut vous me suggérer. J'attends les bonnes réponses comme: 02h11 >> pour un premier emploi
Avez-vous déjà des emplois qui commencent à 23:04:59 le jour 1 et se terminent à 00:34:31 le jour 2? Votre script est terriblement inefficace. Vous pouvez traiter les données avec un seul script 'awk'. –
Non Jonathan, Ces travaux démarrent à partir de 6 heures du matin et généralement terminés avant 18 heures IST, et ces travaux utilisent le fichier de réutilisation (fichier du jour précédent) donc aucune chance de fonctionner longtemps pour une combinaison de 2 jours. –
@Jonathan, je suis juste curieux de savoir comment on peut soustraire l'entité temporelle en unix à côté de la longue sous-station 'expr $ H2 - $ H1',' expr $ M2 - $ M1', 'expr $ S2 - $ S' et ainsi sur .. –