我有一个shell脚本来生成两种类型的报告。每个报告都是通过执行Sweave脚本生成,然后从生成的tex文件中编译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'时出现错误,它会退出但仍会生成一个tex文件(我检查过它无法停止),这个tex文件无法在pdflatex中正确编译,即'pdflatex Weekly.tex'命令会挂起,shell脚本不会移动到下一个'R CMD Sweave Daily.Rnw'。
现在,我的问题: 如果我知道某个shell命令不应该花费更多的30秒,那么在说几分钟(或任意时间间隔)之后,有没有办法诱导该命令的定时退出(假设它挂起)?或者,有没有办法在编译tex文件时遇到错误后强制关闭乳胶引擎?
感谢。
答案 0 :(得分:3)
使用pdflatex -halt-on-error
阻止pdflatex
提问。
答案 1 :(得分:2)
请参阅R.utils::evalWithTimeout
或setTimeLimit
- 这些可以在达到超时并且只要用户可以中断命令时中断命令,shell或其他方式。
答案 2 :(得分:0)
或者,如果从R CMD check
调用pdflatex,并且您不知道如何将参数传递给pdflatex,并且您使用的是Windows,那么另一种选择是:
然后:
这应该修复R CMD检查似乎挂起错误“检查重新构建小插图PDF ...”或“检查手册的PDF版本......”问题。