Обнаружить ошибку запущенного процесса?

Я должен выполнить процесс, который иногда выдает ошибку. Однако каждый раз, когда он выдает эту ошибку, он не выходит из процесса.

aneesh@nb-14:~$ emulator -no-boot-anim -avd Andreud
Emulator ERROR: Unable to load VM from snapshot. The snapshot file was saved for a
different hardware configuration
^Z
aneesh@nb-14:~$ emulator -no-boot-anim -avd Andreud

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

Однако мой вопрос заключается в том, как (с помощью команды) обнаружить эту ошибку, пока этот процесс еще выполняется, и, если да, убить ее.

0
задан 5 July 2013 в 17:39

1 ответ

Запустите эмулятор в фоновом режиме, отправив весь его вывод во временный файл

emulator -no-boot-anim -avd Andreud &>/tmp/emulator-output &

Затем получите PID недавно запущенного процесса и сохраните его в переменной EMULATORPID

[ 111]

Затем, пока эмулятор еще работает, просмотрите выходной файл на наличие ошибки, а когда он найден, завершите процесс с помощью PID:

while ps -p$EMULATORPID ; do
   grep "Emulator ERROR" /tmp/emulator-output && kill $EMULATORPID
done

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

  CTR=0
  while ps -p$EMULATORPID &&  [ $CTR -lt 5 ]  ; do
     grep "Emulator ERROR" /tmp/emulator-output && kill $EMULATORPID
     sleep 1s;
     CTR=$[CTR+1] 
  done
0
ответ дан 5 July 2013 в 17:39

Другие вопросы по тегам:

Похожие вопросы: