Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bnosac/cronR
A simple R package for managing your cron jobs.
https://github.com/bnosac/cronR
cron r rstudio scheduler
Last synced: 3 months ago
JSON representation
A simple R package for managing your cron jobs.
- Host: GitHub
- URL: https://github.com/bnosac/cronR
- Owner: bnosac
- License: other
- Fork: true (kevinushey/cronR)
- Created: 2016-05-05T10:22:10.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-12T08:26:18.000Z (11 months ago)
- Last Synced: 2024-07-14T11:06:25.179Z (4 months ago)
- Topics: cron, r, rstudio, scheduler
- Language: R
- Size: 215 KB
- Stars: 289
- Watchers: 9
- Forks: 38
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-shiny-extensions - cronR - R package for managing cron jobs. (Backend / Job Scheduling)
- jimsghstars - bnosac/cronR - A simple R package for managing your cron jobs. (R)
README
cronR
=========![cronR](tools/cronR-logo.png)
Schedule R scripts/processes with the cron scheduler. This allows R users working on Unix/Linux to automate R processes at specific timepoints from R itself.
Note that if you are looking for a Windows scheduler, you might be interested in the R package taskscheduleR available at
https://github.com/bnosac/taskscheduleRBasic usage
-----------This R package allows you to
* Get the list of scheduled jobs
* Remove scheduled jobs
* Add a job
+ A job is basically a script with R code which is run through Rscript
+ You can schedule tasks 'ONCE', 'EVERY MINUTE', 'EVERY HOUR', 'EVERY DAY', 'EVERY WEEK', 'EVERY MONTH' or any complex schedule
+ The task log contains the stdout & stderr of the Rscript which was run on that timepoint. This log can be found at the same folder as the R scriptRStudio add-in
-----------The package also contains an RStudio addin. If you install the package and use RStudio version 0.99.893 or later you can just click to schedule a task. Just click Addins > Schedule R scripts on Linux/Unix.
![](tools/cronR-rstudioaddin.png)
- Alternatively, run `cronR::cron_rstudioaddin()` to open the addin interface. If you use that addin to schedule scripts, by default it will copy the R scripts to your current working directory and launch the copied scripts from there. A different directory can be specified by passing an argument to the `RscriptRepository` parameter `cronR::cron_rstudioaddin(RscriptRepository = "/path/to/your/deployment/directory")`
- You can also set the `CRON_LIVE` environment variable to specify a default directory to copy scheduled scripts to. This can be done by putting something like `CRON_LIVE="/path/to/your/deployment/directory"` in your .Renviron or .Rprofile file. See ?StartupUsage
-----------Some example use cases are shown below, indicating to schedule a script at specific timepoints.
```
library(cronR)
f <- system.file(package = "cronR", "extdata", "helloworld.R")
cmd <- cron_rscript(f)
cmdcron_add(command = cmd, frequency = 'minutely', id = 'test1', description = 'My process 1', tags = c('lab', 'xyz'))
cron_add(command = cmd, frequency = 'daily', at='7AM', id = 'test2')
cron_njobs()cron_ls()
cron_clear(ask = TRUE)
cron_ls()cmd <- cron_rscript(f, rscript_args = c("productx", "arg2", "123"))
cmd
cron_add(cmd, frequency = 'minutely', id = 'job1', description = 'Customers')
cron_add(cmd, frequency = 'hourly', id = 'job2', description = 'Weather')
cron_add(cmd, frequency = 'hourly', id = 'job3', days_of_week = c(1, 2))
cron_add(cmd, frequency = 'hourly', id = 'job4', at = '00:20', days_of_week = c(1, 2))
cron_add(cmd, frequency = 'daily', id = 'job5', at = '14:20')
cron_add(cmd, frequency = 'daily', id = 'job6', at = '14:20', days_of_week = c(0, 3, 5))
cron_add(cmd, frequency = 'daily', id = 'job7', at = '23:59', days_of_month = c(1, 30))
cron_add(cmd, frequency = 'monthly', id = 'job8', at = '10:30', days_of_month = 'first', days_of_week = '*')
cron_add(cmd, frequency = '@reboot', id = 'job9', description = 'Good morning')
cron_add(cmd, frequency = '*/15 * * * *', id = 'job10', description = 'Every 15 min')
cron_ls()
cron_clear(ask = TRUE)
```By default, when you use the functions `cron_add`, `cron_rm`, `cron_clear`, `cron_load`, a prompt will ask for your permission to update the cron schedule, unless you put the argument `ask=FALSE` in each of these functions, in which case you automatically allow to update the schedule. (new since R package version 0.6.0)
Install
-----------Make sure the cron daemon (https://en.wikipedia.org/wiki/Cron) is running. On Debian this is done as follows.
```
sudo apt-get update
sudo apt-get install -y cron
sudo cron start
```- For regular users, install the package from your local CRAN mirror with `install.packages("cronR")`, for installing the development version of this package: `remotes::install_github("bnosac/cronR")`
- If you want the RStudio add-in to work, also install miniUI, shiny and shinyFiles```
install.packages("cronR")
install.packages('miniUI')
install.packages('shiny')
install.packages('shinyFiles')
```Now have a look at `?cron_add` or start the RStudio addin
Notes
------------ Consider adding `options(echo = TRUE)` at the start of your R scripts in order to debug your scripts in case of errors.
- Consider using argument `env` when calling `cron_add` if you need specific environment variables to be used in your script, These will be prepended to your script. E.g. as follows where you replace dry_run to FALSE to add it to your cron job list.```
cmd <- cron_rscript("/path/to/your/script.R")
cron_add(cmd, frequency = 'minutely', id = 'job1', description = 'Customers',
env = c(LANG = "en_US.UTF-8", R_LIBS_USER = Sys.getenv("R_LIBS_USER"), YOUR_PROJECT_XYZ = getwd()),
ask = FALSE, dry_run = TRUE)
```- Currently, `cronR` does not preserve or handle cron jobs not
generated through the package. This will be handled some time in
the future. To be safe, you should run `cron_save("cron.backup")`
before fiddling around.