/ क्रॉन से चलते समय / बैश स्क्रिप्ट व्यवहार विषम है। लेकिन ठीक है जब मैनुअल चल रहा है - बैश, क्रॉन

क्रॉन से चलते समय बैश स्क्रिप्ट का अजीब व्यवहार होता है। लेकिन ठीक है जब मैनुअल चल रहा है - बैश, क्रॉन

निम्नलिखित स्क्रिप्ट चल रही है git pull और उसके बाद फ़ाइल को स्थिति लिखें।

#!/bin/bash
git pull

git log -7 > /var/www/domain.com/v.txt

जब मैं फ़ाइल को मैन्युअल रूप से चलाता हूं, तो फ़ाइल v.txt बनाई जाती है और सामग्री को अपेक्षा के अनुसार अंदर बनाया जाता है।
bash /var/www/domain.io/update.sh

जब मैं क्रॉन के माध्यम से इसे चलाता हूं तो फ़ाइल बनाई जाती है लेकिन सामग्री होती है खाली
* * * * * bash /var/www/domain.io/update.sh

क्या गलत है?

उत्तर:

जवाब के लिए 0 № 1

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

एक परीक्षण के रूप में आप निम्नलिखित कोशिश कर सकते हैं। एक छोटी बैश खोल स्क्रिप्ट बनाएं जो आपके पर्यावरण को फ़ाइल में डंप करे और इस स्क्रिप्ट को कमांड लाइन और क्रॉन दोनों से चलाएं और मतभेदों को देखें।

उदाहरण के लिए। फ़ाइल नाम: r1.sh

#! /bin/bash
env

कमांड लाइन से:

$ r1.sh > cmd-line.out

क्रॉन से

* * * * * /home/your-user-name/r1.sh > /home/your-user-name/cron.out

नोट: खोल स्क्रिप्ट और आउटपुट फ़ाइल के लिए पूर्ण पथ नामों का उपयोग करें।

जब मैंने अपने सिस्टम पर यह परीक्षण किया, वहां दो के बीच कई अंतर थे, उदाहरण के लिए पैथ चर बहुत छोटा था।

यदि यह आपके सिस्टम पर मामला है तो शायद "गिट" क्रॉन एनवी में उपलब्ध नहीं है।

वैसे भी, कोशिश करने के लिए सिर्फ एक विचार है। आशा है कि ये आपकी मदद करेगा।