क्या आप मुझे सलाह दे सकते हैं कि मैं क्या लिखूं crontab
ताकि यह /usr/bin/chromium-browser
हर 15 सेकंड में कुछ काम चला सके (परीक्षण के लिए )
क्या आप मुझे सलाह दे सकते हैं कि मैं क्या लिखूं crontab
ताकि यह /usr/bin/chromium-browser
हर 15 सेकंड में कुछ काम चला सके (परीक्षण के लिए )
जवाबों:
आप क्रोन के साथ एक मिनट की ग्रैन्युलैरिटी से नीचे नहीं जा सकते। आप क्या कर सकते हैं, हर मिनट, एक स्क्रिप्ट चलाएं जो आपकी नौकरी चलाती है, 15 सेकंड इंतजार करती है और दोहराती है। निम्नलिखित क्रॉस्टैब लाइन some_job
हर 15 सेकंड में शुरू होगी ।
* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job
यह स्क्रिप्ट मानती है कि नौकरी में 15 सेकंड से अधिक का समय नहीं लगेगा। निम्नलिखित थोड़ी अधिक जटिल स्क्रिप्ट अगले उदाहरण को नहीं चलाने का ख्याल रखती है यदि कोई चलाने में बहुत लंबा समय लेता है। यह प्रारूप का date
समर्थन करने पर निर्भर करता है %s
(उदाहरण के लिए जीएनयू या बिजीबॉक्स, इसलिए आप लिनक्स पर ठीक होंगे)। यदि आप इसे सीधे क्रॉस्टैब में रखते हैं, तो ध्यान दें कि %
अक्षरों को \%
क्रॉस्टैब लाइन में लिखा जाना चाहिए ।
end=$(($(date +%s) + 45))
while true; do
some_job &
[ $(date +%s) -ge $end ] && break
sleep 15
wait
done
[ $(date +%s) -ge $(($end + 15)) ] || some_job
मैं हालांकि इस बात पर ध्यान दूंगा कि अगर आपको हर 15 सेकंड में जितनी बार नौकरी चलाने की आवश्यकता है, क्रोन शायद गलत दृष्टिकोण है। हालांकि, अल्पकालिक प्रक्रियाओं के साथ यूनिटीज अच्छी हैं, हर 15 सेकंड में एक प्रोग्राम लॉन्च करने का ओवरहेड गैर-नगण्य हो सकता है (यह इस बात पर निर्भर करता है कि प्रोग्राम की मांग कैसी है)। क्या आप हर समय अपना एप्लिकेशन नहीं चला सकते और क्या यह हर 15 सेकंड में अपने कार्य को अंजाम देता है?
1 2 3 4 ; do some_job & sleep 15; done
(अंतिम नींद अगले रन को प्रभावित नहीं करेगी), लेकिन जिस तरह से आप करते हैं वह शायद आउटगोइंग क्रोनजोब मेल के समय के लिए बेहतर है (पिछले कुछ_जॉब के बाद भेजा गया, 15 के बाद के अंत में मेरा वैरिएंट)
दूसरों की तुलना में अलग-अलग दृष्टिकोण: 4 क्रोनोज़र चलाएं, प्रत्येक 15 सेकंड से कंपित:
* * * * * sleep 00; timeout 15s some_job
* * * * * sleep 15; timeout 15s some_job
* * * * * sleep 30; timeout 15s some_job
* * * * * sleep 45; timeout 15s some_job
खुद में हस्तक्षेप करने से काम रोकने के लिए हम जीएनयू के माध्यम से 15 सेकंड के लिए अपने रन-टाइम की सीमा coreutils ' timeout
हर काम के लिए। हालाँकि, ध्यान दें कि यदि नौकरी 15 वीं के अंत में तुरंत ठीक से बाहर निकलने में विफल रहती है, तो आप अभी भी समस्याओं का सामना कर सकते हैं। यदि यह समस्या बन जाती है, तो कैसे हल करें, इसके विवरण के लिए कमांड मैनुअल देखें। यह भी ध्यान दें, यदि कमांड 15 से अधिक समय लेता है, और टाइमआउट इसे मारता है, तो आपको एक गैर-शून्य निकास स्थिति मिलेगी जो क्रोनजोब-ईमेल को ट्रिगर करेगी।
संक्षेप में, क्रॉन समय के साथ दानेदार नहीं है। सबसे कम अवधि आपको 1 मिनट मिलेगी।
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .----- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
* * * * /usr/bin/chromium-browser
हालाँकि आप एक स्क्रिप्ट लिख सकते हैं जो हर 15 सेकंड में चलेगी ...
* * * * * /usr/bin/chromium-browser
है कोंट्राब में। मैनुअल के अनुसार इसे हर मिनट चलना चाहिए लेकिन कुछ भी नहीं चल रहा है।
अपने कोंट्राब में:
* * * * /usr/bin/chromium-browser_starter
फिर में /usr/bin/chromium-browser_starter
:
#!/bin/sh
# chromium-browser_starter
#
# Schedules /usr/bin/chromium-browser to run every 15 seconds for a minute.
# Intended to be called every minute through crond(8).
for ((secs=0; secs<46; secs+=15)); do
(sleep $secs; /usr/bin/chromium-browser "$@") &
done
wait
ps aux | grep chrom
एक मिनट के बाद लिखता हूं तो मैं क्रोमियम-ब्राउज़र को चालू नहीं देख सकता।
sleep
।