Crontab नौकरी में कमांड प्रतिस्थापन क्यों काम नहीं करता है?


0

crontab -l:

* * * * * /Users/michel/Desktop/myScript.sh

myScript.sh:

#!/bin/bash
/usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'

यह एक त्रुटि नहीं बताता है, लेकिन बढ़ने का संदेश खाली है, इसलिए "$(/Users/michel/Desktop/anotherScript.sh data.txt)"काम नहीं किया।

लेकिन अगर मैं /usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'मैन्युअल रूप से योजनाबद्ध तरीके से काम करता हूं, तो मैं bash से निष्पादित करता हूं ।

जवाबों:


1

शैल स्क्रिप्ट से लागू cronगैर लॉगिन, गैर-सहभागी गोले, जिसका मतलब है कि वे काफी छीन नीचे वातावरण की एक किस्म में लागू कर रहे हैं, और वे ठेठ खोल स्टार्टअप स्क्रिप्ट (के किसी भी स्रोत नहीं है .profile, .bashrc, आदि)।

मैं अनुमान लगा रहा हूं कि anotherScript.shइस मोड में डिफ़ॉल्ट रूप से उपलब्ध नहीं होने वाली किसी चीज पर निर्भर करता है। जैसे कि सामान्य लॉगिन- या इंटरेक्टिव-शेल स्टार्टअप फ़ाइलों में परिभाषित की गई कुछ चीजें जो खट्टी नहीं हुईं।

देखें bashविभिन्न तरीकों के बारे की (उत्कृष्ट) आदमी पेज bashलागू कर सकते हैं, और जो स्टार्टअप फ़ाइलों यह प्रत्येक मामले में के लिए लग रहा है।


1
पर्यावरण चर अलग-अलग होते हैं, PATH या LD_LIBRARY_PATH आमतौर पर आपको मिलते हैं। आपके पास या तो टर्मिनल नहीं है (मेरे पास सामान था जो sttyकमांडों पर टूट गया था )
रिच होमोलका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.