हर सप्ताहांत में एक बार एक लॉन्च कार्य कैसे चलाया जाता है?


0

मैं एक क्रोन के रूप में एक रूबी कार्यक्रम चलाने की कोशिश कर रहा हूं। मुझे पता चला है कि एक लॉन्च से रूबी प्रोग्राम को कैसे चलाना है समस्या यह है कि मुझे नहीं पता कि "हर रविवार को एक बार नौकरी कैसे चलाएं"। नीचे मेरी .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>EnableGlobbing</key>
    <false/>
    <key>Label</key>
    <string>ScratchFolders.job</string>
    <key>ProcessType</key>
    <string>Background</string>
    <key>Program</key>
    <string>/usr/local/rvm/wrappers/scratch-monitor/ruby</string>
    <key>ProgramArguments</key>
    <array>
        <string></string>
        <string>scratch-clean.rb</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/ScratchFolders.job.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/ScratchFolders.job.out</string>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Weekday</key>
            <integer>7</integer>
        </dict>
    </array>
    <key>WorkingDirectory</key>
    <string>~/automation-scripts/</string>
</dict>
</plist>

जवाबों:


1

पहली और सबसे बड़ी समस्या यह है कि आप उपयोग कर रहे हैं Programऔर ProgramArgumentsकुंजी गलत। वे बल्कि भ्रमित कर रहे हैं क्योंकि वे पहले दो तर्कों के अनुरूप हैं execvp, और जब तक आप समझते नहीं हैं execvp, आप इन कुंजियों को ठीक से नहीं समझेंगे। लेकिन ज्यादातर मामलों में इसे करने का एक सरल तरीका है: उपयोग न करें Program, और पहले स्ट्रिंग में कार्यक्रम का पूरा रास्ता डालें ProgramArguments:

<key>ProgramArguments</key>
<array>
    <string>/usr/local/rvm/wrappers/scratch-monitor/ruby</string>
    <string></string>
    <string>scratch-clean.rb</string>
</array>

(ध्यान दें: मैं मान रहा हूँ कि आप कार्यक्रम में एक रिक्त प्रथम तर्क पारित करने की कोशिश कर रहे हैं - यदि नहीं, तो हटा दें <string></string>।)

दूसरी समस्या जो मुझे दिख रही है वह है WorkingDirectoryकुंजी - मुझे पूरा यकीन है कि यह ~इस संदर्भ में विस्तार नहीं करेगी , इसलिए आपको स्पष्ट रूप से पूर्ण पथ निर्दिष्ट करने की आवश्यकता है:

<key>WorkingDirectory</key>
<string>/Users/chan/automation-scripts/</string>

अंत में, मुझे लगता है कि आपको इसे शुरू करने के लिए घंटे और मिनट भी निर्दिष्ट करने की आवश्यकता हो सकती है:

<key>StartCalendarInterval</key>
<dict>
    <key>Weekday</key>
    <integer>7</integer>
    <key>Hour</key>
    <integer>3</integer>
    <key>Minute</key>
    <integer>15</integer>
</dict>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.