निम्नलिखित स्क्रिप्ट चल रही है 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
नोट: खोल स्क्रिप्ट और आउटपुट फ़ाइल के लिए पूर्ण पथ नामों का उपयोग करें।
जब मैंने अपने सिस्टम पर यह परीक्षण किया, वहां दो के बीच कई अंतर थे, उदाहरण के लिए पैथ चर बहुत छोटा था।
यदि यह आपके सिस्टम पर मामला है तो शायद "गिट" क्रॉन एनवी में उपलब्ध नहीं है।
वैसे भी, कोशिश करने के लिए सिर्फ एक विचार है। आशा है कि ये आपकी मदद करेगा।