R 从shell命令定时退出
我有一个shell脚本来生成两种类型的报告。每个报告都是通过执行一个swave脚本,然后从生成的tex文件中编译出一个PDF来生成的R 从shell命令定时退出,r,shell,sweave,R,Shell,Sweave,我有一个shell脚本来生成两种类型的报告。每个报告都是通过执行一个swave脚本,然后从生成的tex文件中编译出一个PDF来生成的 eval "R CMD Sweave Weekly.Rnw" eval "pdflatex Weekly.tex" eval "R CMD Sweave Daily.Rnw" eval "pdflatex Daily.tex" 例如,如果在执行“R CMD swave Weekly.
eval "R CMD Sweave Weekly.Rnw"
eval "pdflatex Weekly.tex"
eval "R CMD Sweave Daily.Rnw"
eval "pdflatex Daily.tex"
例如,如果在执行“R CMD swave Weekly.Rnw”时出错,它将退出,但仍会生成一个tex文件(我已检查该文件无法停止),并且该tex文件无法在pdflatex中正确编译,即“pdflatex Weekly.tex”命令将挂起,shell脚本将不会移动到下一个“R CMD swave Daily.Rnw”
现在,我的问题是:
如果我知道某个shell命令不应超过30秒,有没有办法在几分钟(或任意时间间隔)后使该命令定时退出(假设它挂起)?或者,在编译tex文件时遇到错误后,是否有办法强制关闭latex引擎?使用
pdflatex-halt on error
停止pdflatex
提问。请参见R.utils::evalWithTimeout
或setTimeLimit
-这些命令可以中断shell或其他命令,我相信,当达到超时时,只要用户可以中断命令。或者,如果正在从R CMD check
调用pdflatex,并且您不知道如何将参数传递给pdflatex,并且您正在使用Windows,则另一种选择是:
- 开始->程序->MikTex 2.9->维护(管理)->设置(管理)
- 单击刷新FNDB
- 单击更新格式
- 更改动态安装缺少的软件包为否
这应该可以修复“检查渐晕图PDF的重新构建…”或“检查手册的PDF版本…”问题上出现的R CMD check挂起的错误。为什么要使用
eval
?正如bash常见问题解答所说,“eval是对邪恶的拼写错误,如果答案是eval,那么你问的问题就错了。”在某些情况下,eval
是合适的;这是不是其中之一还很不清楚。您的意思可能是重复的pdflatex-interaction=batchmode
pdflatex-halt on error
允许pdflatex在第一个错误时退出。是的,但这就是重点。。。如果知道文件已损坏,为什么还要麻烦生成更多错误?批处理模式还有其他含义,所以它可能是您想要的,也可能不是您想要的。pdflatex-interaction=nonstopmode
似乎效果最好,因为它有助于跳过所有用户交互,这些交互通常是与错误相关的交互。