Скрипт для проверки статуса вычислений - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующая проблема, которую я пытался решить, но так как мои знания о Bash ограничены, я прошу помощи. У меня есть набор файлов с расширением inp (например, name1.inp, name2.inp et c.). Они находятся в какой-то папке и отправляются в очередь. В какой-то момент начинается вычисление и создается выходной файл (например, name1.log, name2.log и c.). После завершения вычислений выходной файл будет содержать последнюю похожую строку «Нормальное завершение». Я хотел бы написать сценарий, который проверяет статус таких вычислений, то есть распечатывает информацию, если вычисление началось, выполняется или завершено. Я знаю, как проверить завершенное вычисление (команда tail), но не знаю, как выполнить l oop по всем inp-файлам в папке, чтобы проверить, являются ли они файлами журнала, и если они присутствуют, просто чтобы проверить, есть ли строка «Нормальное завершение» присутствует или нет. Если для inp-файла файл журнала отсутствует, сценарий также скажет, что вычисление еще не начато.

Большое спасибо за решение этой простой проблемы.

1 Ответ

2 голосов
/ 03 августа 2020

Благодаря множеству полезных замечаний скрипт выглядит следующим образом и работает очень хорошо. Большое спасибо тем, кто прокомментировал предыдущий пост.

for inp in *.inp; do

  inpfile="${inp##*/}"
  inpname="${inpfile%.inp}"
  outfile="${inpname}.log"

  if test -f "$outfile"; then
    # echo "$outfile exists."

    if grep -q 'Normal termination' $outfile; then
      echo ">> $outfile FINISHED."
    else
      echo "-- $outfile IN PROGRESS."
    fi

  else
    #echo "$outfile does not exist."
    echo "XX $outfile NOT STARTED."
  fi

done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...