У меня есть скрипт bash, предназначенный для проверки того, завершен ли файл журнала Condor:
eval "condor_wait -wait ${PRIVATE_TIMEOUT} ${logfile}" > /dev/null &
timer="$(date +%s)"
myPid=$!
while kill -0 "$myPid" 2> /dev/null
do
t_passed="$(($(date +%s)-timer))"
printf 'Elapsed: %dh:%dm:%ds of %dh:%dm:%ds \r'\
$(($t_passed/3600)) $(($t_passed%3600/60)) $(($t_passed%60))\
$(($PRIVATE_TIMEOUT/3600)) $(($PRIVATE_TIMEOUT%3600/60)) $(($PRIVATE_TIMEOUT%60))
done
В прошлом это работало очень хорошо. Однако в настоящее время я сталкиваюсь со странным поведением, когда выполнение condor_wait ${logfile}
не обновляется, когда файл журнала завершен.
Например, если запустить condor_wait ${logfile}
до завершения задания, вывод вообще не будет. Однако, если вы снова запускаете ту же команду в другом терминале, вы замечаете, что задание завершено.
Для меня это новое поведение, но теперь, похоже, оно происходит независимо от моего сценария bash. Это никогда не было проблемой раньше, и я не понимаю, почему я вижу этот эффект.
Есть ли лучший способ определить, завершена или нет указанная работа?
Большое спасибо,
Джек