चल रहा है। हर 5 मिनट में


12

मेरे पास एक .sh स्क्रिप्ट है जो जापानी उपग्रह के सर्वर से एक तस्वीर डाउनलोड करता है और इसे पृष्ठभूमि चित्र के रूप में सेट करता है। मैंने इसे स्टार्टअप सूची में डाल दिया है, लेकिन मैं इसे कैसे चलाऊं, जैसे 5 मिनट, स्वचालित रूप से?


1
Cronmaker.com आज़माएं, वहां आप क्रोन-एक्सप्रेशन बना सकते हैं और इसे crontab -e के साथ डाल सकते
हैं

2
क्या हर 5 मिनट में तस्वीर बदल भी जाती है? एक अंतराल का उपयोग करने का प्रयास करें जो लक्ष्य सर्वर पर कम अनावश्यक भार पैदा करता है। या सुनिश्चित करें कि आप केवल डाउनलोड करें यदि फ़ाइल वास्तव में बदल गई है।
til_b

1
वैसे, अंतरिक्ष पृष्ठभूमि के लिए यूआरएल क्या है?
बोहदन_त्रोतेंको

जवाबों:


14

आलसी विकल्प

यदि आप आसान तरीका चाहते हैं, और यह पता लगाने से बचें कि कौन सा पर्यावरण चर सेट करना है:

  • सुनिश्चित करें कि आपकी स्क्रिप्ट में शेबंग शामिल है
  • इसे अमल में लाएं
  • स्टार्टअप अनुप्रयोगों के लिए निम्नलिखित जोड़ें:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"

    डैश> स्टार्टअप एप्लिकेशन> जोड़ें। कमांड जोड़ें:

    /bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"

व्याख्या

यदि आप अपने स्वयं के वातावरण से स्क्रिप्ट चलाते हैं (जैसे टर्मिनल विंडो या स्टार्टअप एप्लिकेशन से), तो कई पर्यावरण चर सेट किए जाएंगे। cronहालाँकि आपकी स्क्रिप्ट पर्यावरण चर के सीमित सेट के साथ चलती है।
चूंकि आपकी स्क्रिप्ट में कोई शक नहीं gsettingsकमांड का उपयोग करता है :

gsettings get org.gnome.desktop.background picture-uri <wallpaper>

वॉलपेपर सेट करने के लिए, लगभग निश्चित रूप से कमांड टूट जाएगा जब से चलाया जाएगा cron

"आलसी समाधान" का नकारात्मक रूप से विशुद्ध रूप से सैद्धांतिक है। एक कमांड जो लगातार सोता है, इसका मतलब है कि आपके सिस्टम में कुछ भी नहीं है।

अतिरिक्त जानकारी; वैकल्पिक रूप से

इस पोस्ट को पढ़ना , और अतीत के अनुभवों से, मुझे पूरा यकीन है कि DBUS_SESSION_BUS_ADDRESSपर्यावरण चर को सेट करने की आवश्यकता है।

ऐसा करने के लिए, अपनी स्क्रिप्ट की शुरुआत में (शेबंग के नीचे) निम्न अनुभाग जोड़ें:

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

फिर आपको इसे सफलतापूर्वक चलाने में सक्षम होना चाहिए cron

आप हालांकि बहुत अच्छी तरह से ऊधम को बचा सकते हैं, और आलसी विकल्प चुन सकते हैं।


@AleksanderMahnyov आपका स्वागत है। खुशी है कि यह काम करता है :)
याकूब Vlijm

2
क्रॉन जॉब का इस्तेमाल करना इतना बेहतर है।
लुका रामाविवि

1
@LukaRamishvili टिप्पणी के लिए धन्यवाद। हालाँकि: a। और यही वजह है कि? स्लीपिंग कमांड का मतलब आपके सिस्टम से कुछ भी नहीं है। ख। मैंने विकल्प भी शामिल किया।
जैकब व्लिजम

1
अन्यथा, सूक्ति सत्र चर के बारे में अच्छा शोध, यह ओपी को बहुत मदद करेगा, क्योंकि इसके लिए दोनों तरह की आवश्यकता होगी।
लुका रामाविसिली

2
मैंने अभी देखा: cpu 0.0%हम किस कर के बारे में बात कर रहे हैं?
जैकब व्लिजम

25

अपने में डालो crontab

cronद्वारा अपनी तालिका खोलें :

crontab -e

अब जोड़ें:

*/5 * * * * /path/to/script.sh

स्क्रिप्ट को पहले से अमल में लाना न भूलें।


जैसा कि आपकी स्क्रिप्ट एक्स पर निर्भर करती है, शायद DISPLAYस्क्रिप्ट के वातावरण को जोड़ने के लिए एक अच्छा विचार होगा :

*/5 * * * * DISPLAY=:0 /path/to/script.sh

:0अपने वास्तविक के साथ बदलें DISPLAY( echo $DISPLAYइंटरेक्टिव सत्र से पाया जा सकता है )।

यदि आवश्यक हो, तो आप XAUTHORITYपर्यावरण चर भी जोड़ सकते हैं :

*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh

फिर से आप मान पा सकते हैं echo $XAUTHORITY


1
निश्चित नहीं है कि यह क्रोन के सीमित पर्यावरण चर के साथ काम करता है, लेकिन देखते हैं कि क्या ओपी इसका उल्लेख करता है :)
याकूब Vlijm

1
@AleksanderMahnyov कृपया स्क्रिप्ट को जोड़ने के लिए अपने प्रश्न को संपादित करें, सामग्री को देखे बिना कहना मुश्किल है .. DISPLAYXAUTHORITY
संभवतः

1
@ कर्तागिरी क्रोन सेकंड नहीं संभाल सकता, आप भी घंटों तक करने की कोशिश कर रहे हैं जो अभी भी वाक्य रचना में गलत है ..
heemayl

2
मुझे "लेज़ी मैथड" के बजाय इस विधि से प्यार है, क्योंकि मैं क्रॉन के बारे में जानता था, लेकिन रिफ्रेशर कोर्स की थोड़ी जरूरत थी। यह वही है जो मैंने किया है, बहुत बहुत धन्यवाद! :)
ZaxLofful

2
स्वीकृत उत्तर की तुलना में बेहतर दृष्टिकोण। :)
संदीप कुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.