मैं सिर्फ एक बैश स्क्रिप्ट को कॉल करने के 5 मिनट बाद चलाने के लिए चाहता हूं। मैं क्या गलत कर रहा हूं?बैश स्क्रिप्ट 5 मिनट में चलाने के लिए
मैं आदेश है:
/path/to/my/script | at now + 5 min
और फिर भी स्क्रिप्ट अभी हर बार चलाता है।
मैं सिर्फ एक बैश स्क्रिप्ट को कॉल करने के 5 मिनट बाद चलाने के लिए चाहता हूं। मैं क्या गलत कर रहा हूं?बैश स्क्रिप्ट 5 मिनट में चलाने के लिए
मैं आदेश है:
/path/to/my/script | at now + 5 min
और फिर भी स्क्रिप्ट अभी हर बार चलाता है।
आप तुरंत स्क्रिप्ट निष्पादित और at
में इसके उत्पादन भेज रहे हैं। आप at
में स्क्रिप्ट खुद के नाम भेजने की जरूरत है:
echo /path/to/my/script | at now + 5 min
तरीके के बारे में:
sleep 300 && /path/to/my/script
हाँ, इस qu कोशिश एस्टियन को वास्तव में 'एटी' की आवश्यकता नहीं थी। मेरा सुझाव है कि आप ';' के बजाय '&&' का उपयोग करें, इसलिए इसे रद्द किया जा सकता है। –
अच्छा वृद्धि जैक –
पर अधिक आकर्षक आईएमओ है क्योंकि यह एक प्रक्रिया को लटका नहीं देता है। – Eddie
आदेश बाएं से दाएं, तो पहले आप अपनी स्क्रिप्ट निष्पादित हो जाता है, इसके बारे में उत्पादन आदेश में करने के लिए पहुंचाया हो जाएगा मूल्यांकन किया जाता है, इस सामान्य व्यवहार है । अधिक जानकारी के लिए at man pages पर देखें।
समस्या यह है कि आप स्क्रिप्ट चला रहे हैं और आउटपुट को at
कमांड पर पाइप कर रहे हैं। आपको पैरामीटर के रूप में अपनी स्क्रिप्ट के पथ के साथ at
कमांड चलाने की आवश्यकता है। मुझे वाक्यविन्यास का यकीन नहीं है, लेकिन at -h
या man at
सहायता चाहिए।
at -f /path/to/my/script -t now +5 minutes
यह एक विशिष्ट समय पर चलाने के लिए एक स्क्रिप्ट शेड्यूल करने तक काम करना चाहिए। "at
" कमांड पर किसी और जानकारी के लिए linuxmanpages.com पर आज़माएं। मैं गलत विचार हो सकता हूं (वर्तमान में परीक्षण करने के लिए लिनक्स सिस्टम पर नहीं)।
गुड लक वैसे भी
इस
sys.scheduled_run /path/to/my/script 5
मुख्य कार्य
function sys.scheduled_run(){
local PATH_TO_ACTION MINS SLEEPTIME
PATH_TO_ACTION=$1
MINS=$2
SLEEPTIME=$(($MINS * 60))
echo "Sleeping for $MINS minute ($SLEEPTIME seconds) and then running $PATH_TO_ACTION"
ui.countdown $SLEEPTIME
$PATH_TO_ACTION
echo "Done"
if [ "REPEAT" == "$3" ]
then
echo "Going for Repeat"
sys.scheduled_run "[email protected]"
fi
}
काउंटडाउन कार्यप्रणाली
function ui.countdown(){ #USAGE ui.countdown 60 countdown for 60 seconds
local SECONDS=$1
local START=$(date +%s)
local END=$((START + SECONDS))
local CUR=$START
while [[ $CUR -lt $END ]]
do
CUR=$(date +%s)
LEFT=$((END-CUR))
printf "\r%02d:%02d:%02d" \
$((LEFT/3600)) $(((LEFT/60)%60)) $((LEFT%60))
sleep 1
done
echo " "
}
और downvoter देखभाल समझाने के लिए होगा कोई मतलब नहीं है? –