每分钟安排一个 R 脚本 crontab
Schedule a Rscript crontab everyminute
出于某种原因,我的 R 脚本不会 运行 带有 crontab。我现在每分钟都有它进行测试,但一旦它起作用就会改变它。
有什么想法吗?
* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”
此外,这只是终端中的一个普通命令。
我可以在你的 cron 条目中看到可怕的 smart quotes。当您从文字处理器复制粘贴时,经常会发生这种情况。在这些令人厌恶的地方退格并重新输入正常引号。变化:
* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”
至
* * * * * Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
看出区别了吗?它很微妙,很容易错过。
更新:
我看到您已经进行了上述更改,但它仍然不适合您。验证 Rscript
是否在拥有此 crontab 的用户的 $PATH
环境变量中。或者,您可以直接在 cron 条目中指定 Rscript
的完全限定路径。您可以使用以下命令在命令行上快速找到它:
which Rscript
更新#2:
我从您的评论中看到 Rscript
的完全限定路径是 /usr/local/bin/Rscript
。我猜 /usr/local/bin
不在拥有此 crontab 的用户的路径中。尝试使用完全限定路径,如下所示:
* * * * * /usr/local/bin/Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
检查你是否真的是 运行 crontab 守护进程。您应该得到一个数字 return,这是 crontab 的进程 ID。
pgrep cron
确保您的 R 文件是可执行的:
sudo chmod +x [yourfile.R]
在您的 R 文件中添加 shebang 行:
#!/usr/local/bin/Rscript
让 crontab 做目录的改变:
* * * * * cd /Users/Home/Desktop/David Studios/Scraper/ && /usr/local/bin/Rscript compiler.R
您可能对 R 中的工作目录有疑问。
当您从终端 运行 脚本时,您可能位于脚本所需文件所在的目录中,但是当脚本 运行 带有 cron 时,它使用另一个目录。
在访问文件时使用 R 脚本中的 setwd() 函数或使用绝对路径,以确保脚本无论在何处使用都能正常工作。
出于某种原因,我的 R 脚本不会 运行 带有 crontab。我现在每分钟都有它进行测试,但一旦它起作用就会改变它。
有什么想法吗?
* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”
此外,这只是终端中的一个普通命令。
我可以在你的 cron 条目中看到可怕的 smart quotes。当您从文字处理器复制粘贴时,经常会发生这种情况。在这些令人厌恶的地方退格并重新输入正常引号。变化:
* * * * * Rscript “/Users/Home/Desktop/David Studios/Scraper/compiler.R”
至
* * * * * Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
看出区别了吗?它很微妙,很容易错过。
更新:
我看到您已经进行了上述更改,但它仍然不适合您。验证 Rscript
是否在拥有此 crontab 的用户的 $PATH
环境变量中。或者,您可以直接在 cron 条目中指定 Rscript
的完全限定路径。您可以使用以下命令在命令行上快速找到它:
which Rscript
更新#2:
我从您的评论中看到 Rscript
的完全限定路径是 /usr/local/bin/Rscript
。我猜 /usr/local/bin
不在拥有此 crontab 的用户的路径中。尝试使用完全限定路径,如下所示:
* * * * * /usr/local/bin/Rscript "/Users/Home/Desktop/David Studios/Scraper/compiler.R"
检查你是否真的是 运行 crontab 守护进程。您应该得到一个数字 return,这是 crontab 的进程 ID。
pgrep cron
确保您的 R 文件是可执行的:
sudo chmod +x [yourfile.R]
在您的 R 文件中添加 shebang 行:
#!/usr/local/bin/Rscript
让 crontab 做目录的改变:
* * * * * cd /Users/Home/Desktop/David Studios/Scraper/ && /usr/local/bin/Rscript compiler.R
您可能对 R 中的工作目录有疑问。
当您从终端 运行 脚本时,您可能位于脚本所需文件所在的目录中,但是当脚本 运行 带有 cron 时,它使用另一个目录。
在访问文件时使用 R 脚本中的 setwd() 函数或使用绝对路径,以确保脚本无论在何处使用都能正常工作。