Linux - 利用crontab通过.sh定时运行R脚本
该教程在Mac OS环境下运行.
为方便起见,我们的所有文件都放在桌面上.
目录
一些定义
首先给出一些定义
什么是Shell
:
命令解析器. 接收用户命令,然后调用相应的应用程序.
什么是crontab
:
> 命令解析器. crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
1. 创建R脚本
打开RStudio,shift+command+N,可新建一个新的R脚本.
保存该脚本为test.R到桌面.
在脚本中输入
write.table("Hello R!", "~/Desktop/HelloR.txt")
command+return 运行该命令.
该命令的作用是生成一个名为 HelloR.txt 内容为 “Hello R!” 的txt文件到桌面.
2. 创建Shell(.sh)文件
打开终端,在终端中输入
cd ~/Desktop
该命令的作用是进入名为Desktop的文件夹(就是将当前路径变为桌面).
继续在终端中输入
touch test.sh
便可以建立一个名为 test.sh 的Shell文件.
为编辑 test.sh,在终端中输入
vi test.sh
进入 test.sh 编辑界面。
按 i 键编辑,并输入
# !/bin/bash
Rscript ~/Desktop/test.R
date +%Y%m%d
第一行命令为固定格式.
第二行命令为运行之前创建的 test.R 脚本.
第三行命令为输出当前时间.
输入完成之后按Esc,继续输入
:wq
便可保存该 .sh 文件.
或者输入
:q!
则为不保存退出 .sh 文件.
若要运行test.sh文件,来到.sh文件所在的文件夹(此处我们来到桌面)
cd ~/Desktop
并输入
./test.sh
即可运行test.sh文件.
3. 创建定时任务 crontab
输入
crontab -e
创建/编辑现有crontab任务,进入编辑界面后按i键进行编辑,输入
*/1 * * * * ~/Desktop/test.sh
代表每分钟运行一次我们之前创建的test.sh文件. 路径之前的五个位置分别代表
分钟、小时、日期、月份 和 星期. 具体语法请参照另一篇专门讲crontab的博客.
输入完成之后依然是按Esc,然后输入
:wq
进行保存并退出.
然后我们就可以回到桌面盯着看,一分钟后就会出现一个 HelloR.txt 文件. 删除之后,再过一分钟,又会出现一个 HelloR.txt 文件… 直至天荒地老. 其他程序同理,比如你每小时有一个矩阵要解,就可以写一个计算解矩阵的R程序然后每小时运行一次.
4. 一些其他事项
有时候你可以手动执行.sh文件却不能用crontab执行,这时在.sh文件的最前面加上
source ~/.bash_profile
即可解决问题.
若要删除某个特定的定时任务, 输入
crontab -e
并删除相应的行即可.
若要删除所有定时任务, 输入
crontab -r
不过要慎用.