如何在Mac OSX中使用crontab运行RScript

时间:2016-04-16 09:05:24

标签: r macos crontab

我已经在这里搜索了如何做到这一点,没有一个真正解决了我的问题。部分是因为我不明白发生了什么......不幸的是

我有一个Rscript我想安排每天跑步:JASON.r

脚本中的代码如下:

setwd("/Volumes/3TB/")
install.packages("quantmod");library("quantmod")
getSymbols("AAPL")
write.csv(AAPL,"/Volumes/3TB/AAPL.csv")
quit(save='no')

我找到THIS PAGE如何这样做,但我没有成功。 我所做的是打开终端并键入:

Jason-Guevaras-iMac:~ rimeallthetime$ sudo crontab -e

返回以下内容:

crontab: no crontab for root - using an empty one

~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/tmp/crontab.fwiSAwWI4R" 0L, 0C

然后我遇到THIS POST,它有类似的问题,当我输入时:

Jason-Guevaras-iMac:~ rimeallthetime$ sudo su -
Jason-Guevaras-iMac:~ root# crontab -u rimeallthetime -e
crontab: no crontab for rimeallthetime - using an empty one

~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"/tmp/crontab.L1nPwJdBRi" 0L, 0C

这就是我目前所处的地方......

我有MAC OSX El Capitan版本10.11.4

2 个答案:

答案 0 :(得分:2)

在终端中,使用以下命令打开crontab:

sudo crontab -e 

i 进入插入模式。

添加以下行:

0 */23 * * * Rscript /path/to/file/JASON.r

Esc 退出插入模式。

输入 ZZ

您应该会看到以下消息:crontab: installing new crontab

您可以使用crontab -l验证crontab文件。

<强>其它

这将每23个小时运行一次文件。

每个星星/位置对应于:

MIN HOUR DOM MON DOW CMD

随意更改以满足您的需求。

答案 1 :(得分:2)

值得一提的是,OSX仍然支持cron launchd it has been deprecated in favor

要创建启动作业,您需要创建一个“plist”文件,提供运行脚本所需的所有信息并将其放在文件夹~/Library/LaunchAgents中。这是一个示例plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>jason</string>
        <key>ProgramArguments</key>
        <array>
                <string>Rscript /path/to/JASON.R</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
                <key>Minute</key>
                     <integer>0</integer>
                <key>Hour</key>
                     <integer>23</integer>
        </dict>
</dict>
</plist>

然后你需要将这个plist文件加载到launchd调度程序中并启动它:

 launchctl load ~/Library/LaunchAgents/jason.plist
 launchctl start jason

在第二行,名称jason对应于plist文件中的字段Label