比方说,我想让我的计算机每分钟计算一次我的年龄,因此我每天都要执行以下计划任务:
*/1 * * * * bash /path/to/birthCalc
birthCalc本身会调用R脚本,如下所示:
#!/bin/bash
Rscript birthCalc.R
现在,如果我将base R与这样的birthCalc.R一起使用,这一切都可行:
birthDay <- as.POSIXct ('1919-04-15', format = '%Y-%m-%d')
age <- floor ((as.numeric (Sys.time ()) - as.numeric (birthDay))/(365.25*60*60*24))
但是,如果我尝试通过lubridate库使用以下脚本,那么它将不再起作用。
library ('lubridate')
birthDay <- as.POSIXct ('1919-04-15', format = '%Y-%m-%d')
age <- floor (lubridate::time_length (Sys.time () - birthDay, "years"))
如果我在cron作业中运行installed.packages ()
,则会列出lubridate,因此我认为cron作业应该能够找到该库。我在其他库中也遇到了这个问题,但是选择lubridate作为示例。
该脚本仅在作为cron作业运行时失败。我可以从bash终端或在R中以交互方式很好地运行它。我检查了cron是否使用相同的Rscript和R,以及这些软件包是否可访问。我想念什么?
我正在跑步:
R版本3.4.4(2018-03-15)
平台:带有Ubuntu 16.04.5 LTS的x86_64-pc-linux-gnu(64位)
lubridate_1.7.4
非常感谢, TTR
答案 0 :(得分:0)
我找到了解决方案。它似乎与权限有关。我最初以root用户身份创建了cron作业,并尝试为用户创建它。使用crontab -u user -e
代替sudo crontab -e
解决了该问题。尽管将库安装在可访问的目录中,但有人知道为什么这是一个问题吗?