R 从shell命令定时退出

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.

我有一个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.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
似乎效果最好,因为它有助于跳过所有用户交互,这些交互通常是与错误相关的交互。