मैं अपने रास्पबेरी पाई पर इस सरल स्क्रिप्ट को ऑटो अपडेट पर चला रहा हूं ताकि मैं इसके बारे में भूल सकूं। यह एक लॉग भी रखता है जो कहता है कि क्या अपडेट सफल था। स्क्रिप्ट अद्यतन है। श:
#!/bin/bash
echo "Update starts on: $(date)" >> /home/pi/update.log
if apt-get update && apt-get upgrade -y; then
echo "update successful $(date)" >> /home/pi/update.log
else
echo "Couldn't update $(date)" >> /home/pi/update.log
fi
मैंने इस स्क्रिप्ट को रूट क्रॉस्टैब के साथ जोड़ दिया sudo crontab -eऔर क्रोनजोब को हर दिन सुबह 6 बजे चलाने के लिए तैयार किया
0 6 * * * /home/pi/update.sh
मुझे पता है कि यह कुछ हद तक काम करता है क्योंकि sudo ./update.shशेल में चलने से मैन्युअल रूप से कमांड चलता है और लॉग में "सफल" प्रविष्टि छोड़ देता है। दूसरी ओर, जब क्रॉस्टैब से भाग गया, तो मुझे हमेशा "अपडेट नहीं कर सका" प्रविष्टि मिलती है। यदि यह मायने रखता है, तो "pi" उपयोगकर्ता द्वारा "update.sh" स्क्रिप्ट बनाई गई थी और मैंने निष्पादन अनुमतियाँ देने के अलावा कभी भी अनुमतियाँ नहीं बदलीं।
मैंने उसी समस्या के बारे में एक और प्रश्न पढ़ा और उस व्यक्ति ने इसे sudoकमांड के सामने रखकर हल किया । वह मानते हैं कि यह अजीब है क्योंकि इसे पहले ही रूट द्वारा निष्पादित किया जा रहा है, लेकिन कहते हैं कि यह काम करता है। मैंने जोड़ने का प्रयास किया sudoऔर सत्यापित किया कि यह वास्तव में अब काम करता है।
क्या किसी को पता है यह क्यों होता है? sudoअगर यह पहले से ही जड़ है तो इसकी आवश्यकता क्यों है ?
envरूट के रूप में टाइप करने की कोशिश करें और फिर sudo envपरिणामों की तुलना करें।
apt-getकमांड किसी भी त्रुटि की रिपोर्ट करता है ? चूंकि आप इसके आउटपुट को रीडायरेक्ट नहीं कर रहे हैं, इसलिए इसे रूट के मेल के रूप में भेजा जाएगा।