在虚拟机上使用 taskschedulerR

Using taskschedulerR on virtual machine

我想在虚拟机上每天 运行 安排一个 R 脚本。该脚本连接到 DWH,下载数据并在同一文件夹中生成一个 .CSV 文件。

首先,我在虚拟机上安装了 R 和 Rstudio,运行 我的脚本是手动安装的,一切都按预期运行。

接下来,我使用了 taskchedulerR 包并安排了作业。当脚本 运行s 时,它不会生成包含数据的 CSV,而是生成一个包含以下文本的 .log 文件:

Error in file(file, ifelse(append, "a", "w")) :cannot open the connection
Calls: write.csv -> eval.parent -> eval -> eval -> write.table -> file
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) : cannot open file 'Test.csv': 
Permission denied
Execution halted

听起来像是用户权限问题。最有可能的是,运行s Rstudio Server 的用户对您的虚拟机没有写入权限。当您手动 运行 脚本时,您是否以执行任务调度程序脚本的同一用户身份登录?

例如,在我的远程 Shiny Server 上,执行脚本的用户默认称为 'shiny'。因此,我必须授予 'shiny' 用户对脚本目录的 rwx 权限。

编辑:当然,您可以通过 Rstudio 环境之外的系统 cron 作业(或 eqv)添加调度。在 Linux 上,假设 cron 用户在目录中具有 rwx 权限:

Rscript /path/to/script.R

我通过执行以下操作解决了它:

  1. 以管理员身份打开 Rstudio,然后通过 taskscheduler 调度脚本

  2. 使用//指定CSV输出文件夹,如write.csv(DF, file = "C://Users//myusername//Desktop//myscripts//Test.csv")