【问题标题】:File opening error while running Rscript as cronjob将 Rscript 作为 cronjob 运行时文件打开错误
【发布时间】:2020-05-26 21:30:54
【问题描述】:

我正在尝试将 R 脚本作为具有 conda 环境的 cronjob 运行。从终端运行脚本适用于以下script.sh

/opt/anaconda/anaconda3/envs/{env-name}/bin/Rscript '/ABSOLUTE_PATH/script.R'  >> '/ABSOLUTE_PATH/script.log' 2>&1

但是,将crontab -e 中的作业定义为

30 14 * * * /ABSOLUTE_PATH/script.sh

结果 Error: package or namespace load failed for 'tidyverse' in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/opt/anaconda/anaconda3/envs/admenv/lib/R/library/stringi/libs/stringi.so': libicui18n.so.58: cannot open shared object file: No such file or directory Execution halted

我尝试过运行它

/opt/anaconda/anaconda3/envs/{env-name}/bin/R '/ABSOLUTE_PATH/script.R' >> '/ABSOLUTE_PATH/script.log' 2>&1

source /opt/anaconda/anaconda3/bin/activate {env-name}; Rscript '/ABSOLUTE_PATH/script.R' >> '/ABSOLUTE_PATH/script.log' 2>&1

这都会导致与 cronjob 相同的错误。 在 conda conda remove r-tidyverse; conda install -c r r-tidyverse 中重新安装软件包没有帮助。

使用的 R 版本是 3.6.2 和 Anaconda 4.8.2。我该如何解决这个问题?

【问题讨论】:

    标签: r cron anaconda package-managers


    【解决方案1】:

    感谢 vahvero 的出色回复。问题似乎出在我的 conda 环境中,所以只需按照您的说明重新创建环境即可解决问题!

    【讨论】:

      【解决方案2】:

      您很可能错误地使用了环境。 Conda 不能在 bash 脚本中直接调用,因为它想在 shell 中使用 conda init bash

      我设法通过以下步骤完成了这项工作:

      # Create the enviroment to be used
      conda create -n r-env r-base r-essentials <other packages, for example r-tidyverse r-dbi>
      

      接下来创建script.sh:

      conda activate r-env
      Rscript <ABSOLUTE_PATH>/script.R 
      

      然后将 cronjob 作为交互式(-i 选项)shell 调用,它允许激活 conda 环境。

      # You can use obliviously any time you like
      * * * * * bash -i <ABSOLUTE_PATH>/script.sh <any error streams>
      

      用 R 脚本测试

      library(tidyverse)
      library(DBI)
      library(ggplot2)
      print("Hello world!")
      

      通过管道传输到外部文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        相关资源
        最近更新 更多