शेड्यूलिंग आर स्क्रिप्ट


113

मैंने एक आर स्क्रिप्ट लिखी है जो एक डेटाबेस से कुछ डेटा को खींचती है, उस पर कई ऑपरेशन करती है और आउटपुट को एक नए डेटाबेस में पोस्ट करती है।

मैं चाहूंगा कि यह स्क्रिप्ट हर दिन एक विशिष्ट समय पर चले लेकिन मुझे इसे प्रभावी ढंग से करने का कोई तरीका नहीं मिल रहा है।

क्या कोई ऐसा संसाधन सुझा सकता है जिसे मैं इस मुद्दे को हल करने के लिए देख सकता हूं? मैं इस स्क्रिप्ट को विंडोज मशीन पर चला रहा हूं।

जवाबों:


108

वास्तव में विंडोज के तहत आपको शेड्यूलर का उपयोग करने के लिए पहले एक बैच फ़ाइल बनाने की भी आवश्यकता नहीं है ।

  • शेड्यूलर खोलें: START -> सभी प्रोग्राम्स -> एसेसरीज -> सिस्टम टूल्स -> शेड्यूलर
  • एक नया कार्य बनाएँ
  • टैब कार्रवाई के तहत, एक नई कार्रवाई बनाएं
  • चुनें प्रारंभ कार्यक्रम
  • Rscript.exe पर ब्राउज़ करें जिसे यहां रखा जाना चाहिए:
    "C: \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • पैरामीटर फ़ील्ड में आपकी फ़ाइल का नाम इनपुट करें
  • उस पथ को इनपुट करें जहां स्क्रिप्ट को फ़ील्ड में प्रारंभ में पाया जाना है
  • पर जाने के ट्रिगर टैब
  • नया ट्रिगर बनाएं
  • चुनें कि कार्य प्रत्येक दिन , महीने, ... को कई बार दोहराया जाना चाहिए , या जो भी आपको पसंद हो

3
हाँ धन्यवाद! यह वही है जो मेरे लिए काम करता है, न कि ऊपर और न ही विभिन्न अन्य उत्तर वेब पर तैरते हुए। मैं केवल यह जोड़ना चाहूंगा कि फ़ाइल एक्सटेंशन है .Rऔर नहीं .r
esa606

आप वास्तव में इसका क्या मतलब है - आप क्या होने की उम्मीद करेंगे? हो सकता है कि यह अपने स्वयं के प्रश्न में जाना चाहिए (शायद एसओ पर पहले से ही एक उत्तर है)।
पीटरमिसनर

1
वहाँ एक तरह से डॉस खिड़की कम से कम किया जा रहा है?
बजे जॉर्ज डोंटास

58

मान लीजिए कि आपकी R स्क्रिप्ट में mytest.rस्थित है D:\mydocuments\, तो आप निम्न कमांड सहित एक बैच फ़ाइल बना सकते हैं:

C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r

फिर इसे नए कार्य के रूप में जोड़कर, विंडोज़ के कार्य शेड्यूलर के लिए, वहाँ ट्रिगर करने की स्थिति सेट करना।

आप बैच फ़ाइल भी छोड़ सकते हैं। सेट C:\R\R-2.10.1\bin\Rcmd.exeमें program/scriptकार्य अनुसूचक में पाठ बॉक्स, और के रूप में देने के Argumentsप्रारंभिक आदेश के बाकी:BATCH D:\mydocuments\mytest.r

विंडोज़ टास्क शेड्यूलर के माध्यम से निर्धारण आर कार्य (11 फरवरी, 2015 को पोस्ट किया गया)

taskcheduleR: R पैकेज विंडोज टास्क मैनेजर के साथ आर स्क्रिप्ट को शेड्यूल करने के लिए (17 मार्च, 2016 को पोस्ट किया गया)

संपादित करें

मैंने हाल ही में बैच फ़ाइलों का उपयोग फिर से अपनाया, क्योंकि मैं चाहता था कि cmd विंडो को छोटा किया जाए (मुझे दूसरा रास्ता नहीं मिल रहा था)।

विशेष रूप से, मैं Actionsनिम्नानुसार विंडो कार्य शेड्यूलर टैब को भरता हूं :

Program/script:

cmd.exe

Add arguments (optional):

/ c प्रारंभ / मिनट D: \ mydocuments \ mytest.bat ^ और बाहर निकलें

Mytest.bat की सामग्री :

C: \ R \ R-3.5.2 \ bin \ x64 \ Rscript.exe D: \ mydocuments \ mytest.rams


16
का उपयोग करना Rscriptबेहतर है R BATCH। सिस्टम जो लोअर और अपर-केस के बीच अंतर कर सकते हैं rउन्हें भी मिलता है ।
डिर्क एडल्डबुलेटेल

धन्यवाद, मैंने इसका इस्तेमाल नहीं किया था। जैसा कि मैंने देखा, तर्कों को स्क्रिप्ट में भी पारित किया जा सकता है और कमांड का उपयोग करके एक्सेस किया जा सकता है
जॉर्ज डोंटास

5

अब ऐसा करने के लिए RStudio में विकल्प बनाया गया है, शेड्यूलर को चलाने के लिए पहले संकुल के नीचे स्थापित करें

  install.packages('data.table')
  install.packages('knitr')
  install.packages('miniUI')
  install.packages('shiny')
  install.packages("taskscheduleR", repos = "http://www.datatailor.be/rcube", type = 
  "source")

इंस्टॉल करने के बाद में जाएं

**TOOLS -> ADDINS ->BROWSE ADDINS ->taskscheduleR -> Select it and execute it.**

यहां छवि विवरण दर्ज करें


यह मेरे लिए काम नहीं करता है। जब मैं एडिन को चलाने की कोशिश करता हूं, तो मुझे निम्नलिखित त्रुटियां मिलती हैं: आवश्यक नाम स्थान लोड हो रहा है: चमकदार त्रुटि के साथ विफल: 'मैट्रिस के कॉलमों की संख्या का मिलान होना चाहिए (देखें arg 2)' आवश्यक नामस्थान लोड हो रहा है: miniUI त्रुटि के साथ विफल हुआ 'कॉलम की संख्या मेट्रिसेस का मिलान होना चाहिए (देखें arg 2) 'rbind में त्रुटि (जानकारी, getNamespaceInfo (env, "S3methods")): मैट्रिस के स्तंभों की संख्या का मिलान होना चाहिए (देखें
ar2

इस त्रुटि को आज़माने और उसे ठीक करने के लिए बस अद्यतन किया गया डेटा। और अब मुझे निम्न प्राप्त हुए हैं: त्रुटि: ऑब्जेक्ट 'as.xts' को नामस्थान को लोड करने के दौरान नहीं मिला 'data.table'
obewanjacobi

1
क्या RStudio को काम करने के लिए खुला रहना चाहिए?
सामान

1
मुझे लगता है कि अगर आर स्टूडियो करीब है तो यह स्वचालित रूप से इसे खोल देगा और स्क्रिप्ट को चलाएगा।
जीशान

4

मैंने SCHTASKSकार्यक्रम के माध्यम से अपने कार्यों की स्थापना की । स्टार्टअप पर स्क्रिप्ट चलाने के लिए, आप की तर्ज पर कुछ लिखना होगा

SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"

अधिक जानकारी के लिए इस वेबसाइट को देखें SCHTASKSMicrosoft की वेबसाइट पर अधिक जानकारी ।



3

कार्य शेड्यूलर सेट करना

चरण 1) कार्य अनुसूचक खोलें (प्रारंभ> खोज कार्य अनुसूचक)

चरण 2) "कार्रवाई"> "कार्य बनाएं" पर क्लिक करें

चरण 3) "केवल तभी चलाएं जब उपयोगकर्ता लॉग ऑन हो", अनचेक करें "उच्चतम priveledges के साथ चलाएँ", अपने कार्य को नाम दें, "विंडोज विस्टा / विंडोज सर्वर 2008" के लिए कॉन्फ़िगर करें

यहां छवि विवरण दर्ज करें

चरण 4) "ट्रिगर" टैब के तहत, सेट करें जब आप स्क्रिप्ट चलाना चाहेंगे

चरण 5) "कार्रवाई" टैब के तहत, रुपये का पूरा स्थान डाल दिया। exe फ़ाइल, अर्थात्

"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)

अपनी स्क्रिप्ट का नाम इस तरह से लपेटकर -eऔर source()तर्क के साथ रखें :

-e "source('C:/location_of_my_script/test.R')"

यहां छवि विवरण दर्ज करें

टास्क शेड्यूलर में निर्धारित रुपये का समस्या निवारण

जब आप टास्क शेड्यूलर का उपयोग करके स्क्रिप्ट चलाते हैं, तो किसी भी समस्या का निवारण करना मुश्किल है क्योंकि आपको कोई त्रुटि संदेश नहीं मिलता है।

sink()आर में फ़ंक्शन का उपयोग करके इसे हल किया जा सकता है जो आपको निर्दिष्ट फ़ाइल में सभी त्रुटि संदेशों को आउटपुट करने की अनुमति देगा। यहाँ आप यह कैसे कर सकते हैं:

# Set up error log ------------------------------------------------------------
error_log <- file("C:/location_of_my_script/error_log.Rout", open="wt")
sink(error_log, type="message")

try({

# insert your code here

})

दूसरी चीज़ जो आपको अपने रुपये के काम करने के लिए बदलनी होगी, वह है आपकी स्क्रिप्ट में किसी भी फ़ाइल पथ के पूर्ण पथ को निर्दिष्ट करना।

यह कार्य शेड्यूलर में काम नहीं करेगा:

source("./functions/import_function.R")

आपको किसी भी स्क्रिप्ट के पूर्ण फ़ाइल पथ को निर्दिष्ट करने की आवश्यकता होगी जिसे आप अपने रुपये में सोर्स कर रहे हैं:

source("C:/location_of_my_script/functions/import_function.R")

1

इन चरणों के किसी भी संयोजन का पालन करने के बाद और आप प्राप्त करते हैं "Argument Batch Ignored" बाद R.exe रन के बाद त्रुटि , यह प्रयास करें, इसने मेरे लिए काम किया।

विंडोज टास्क शेड्यूलर में:

BATCH "C:\Users\desktop\yourscript.R"तर्क क्षेत्र में बदलें

साथ में

CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"


1
यह मार्क बायर्स के उत्तर (या शायद उस उत्तर को संपादित करें) पर एक टिप्पणी के रूप में समझ में आता है, मुझे नहीं लगता कि यह अकेले खड़ा हो सकता है।
ग्रेगर थॉमस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.