Таймер выхода из команды оболочки - PullRequest
3 голосов
/ 02 января 2012

У меня есть сценарий оболочки для создания отчетов двух типов.Каждый отчет генерируется путем выполнения скрипта Sweave и последующей компиляции PDF-файла из полученного текстового файла.

eval "R CMD Sweave Weekly.Rnw"
eval "pdflatex Weekly.tex"
eval "R CMD Sweave Daily.Rnw"
eval "pdflatex Daily.tex"

Например, если при выполнении 'R CMD Sweave Weekly.Rnw' возникает ошибка, он завершает работу, но генерирует текстовый файл (который, как я проверял, не может быть остановлен), и этот текстовый файл будетнеправильно скомпилировать в pdflatex, т.е. команда 'pdflatex Weekly.tex' зависнет, и скрипт оболочки не будет перемещен к следующему 'R CMD Sweave Daily.Rnw'.

Теперь мой вопрос: если я знаю, что определенная команда оболочки не должна занимать больше 30 секунд, есть ли способ вызвать временный выход из этой команды (при условии, что она зависла), скажем, через пару минут (иликакой-то произвольный промежуток времени)?Альтернативно, есть ли способ принудительно завершить работу латексного движка после того, как он обнаружит ошибки при компиляции текстового файла?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 02 января 2012

Используйте pdflatex -halt-on-error, чтобы pdflatex не задавал вопросы.

2 голосов
/ 02 января 2012

См. R.utils::evalWithTimeout или setTimeLimit - они могут прерывать команды, оболочку или иное, как я полагаю, по истечении времени ожидания и до тех пор, пока команда может быть прервана пользователем.

0 голосов
/ 05 марта 2013

Или, если этот pdflatex вызывается из R CMD check, и вы не знаете, как передавать аргументы в pdflatex, и вы используете Windows, тогда альтернатива:

  • Пуск-> Программы-> MikTex 2.9-> Обслуживание (Admin) -> Настройки (Admin)

, а затем:

  • Нажмите Обновить FNDB
  • Нажмите Обновить форматы
  • Изменить Установить недостающие пакеты на лету на Нет

Это должно исправить ошибку проверки CMD , кажется, зависает ошибка при «проверке перекомпоновки виньетки PDF-файлов ...» или «проверке PDF-версии руководства ...».

...