जारी रखने से पहले मैं अपनी शेल स्क्रिप्ट को एक सेकंड के लिए कैसे रोक सकता हूं?


703

मैंने केवल उपयोगकर्ता इनपुट के लिए प्रतीक्षा करने का तरीका पाया है। हालाँकि, मैं केवल इसलिए रुकना चाहता हूं ताकि while trueमेरा कंप्यूटर क्रैश न हो।

मैंने कोशिश की pause(1), लेकिन यह कहता है -bash: syntax error near unexpected token '1'। यह कैसे किया जा सकता है?

जवाबों:


1232

sleepकमांड का उपयोग करें ।

उदाहरण:

sleep .5 # Waits 0.5 second.
sleep 5  # Waits 5 seconds.
sleep 5s # Waits 5 seconds.
sleep 5m # Waits 5 minutes.
sleep 5h # Waits 5 hours.
sleep 5d # Waits 5 days.

एक समय इकाई को निर्दिष्ट करते समय एक दशमलव भी नियोजित कर सकता है; जैसेsleep 1.5s


12
मैं हमेशा इसे भूल जाता हूँ sleep! ( pause, waitया delayअधिक समझ में आता है और याद रखने में आसान होगा।)
जेरमिया

47
यह मैक ओएस एक्स पर लगता है, एस, एम, एच, और न ही कोई प्रभाव है। आपको सेकंड में समय निर्दिष्ट करना होगा।
AI आर्किटेक्ट

6
मुझे लगता है कि नामकरण इसलिए है क्योंकि हमारे पास thread.sleepकई प्रोग्रामिंग भाषाओं में कार्य है @Geremia
Amin_mmz

89

और क्या इस बारे में:

read -p "Press enter to continue"

35
वास्तव में, इसने मेरे सवाल का जवाब दिया , भले ही यह ओपी का जवाब न दे।
जेसी चिशोल्म

9
इसका इस पोस्ट से कोई लेना देना नहीं है।
मुर्तदाह एस। फेयर

7
@murtadhaalsabbagh, लेकिन Google अनुक्रमण के साथ बहुत कुछ करना है :) मेरी भी मदद की, btw।
इयूलियन ओनोफ्रेई

read -p "जारी रखने के लिए प्रेस दर्ज करें" -t 1 को 1 सेकंड के लिए रोकना चाहिए
SzB

@ जेसे शीशमोल मुझे लगता है कि लोग पॉवरशेल / सीएमडी के बराबर बैश की तलाश कर रहे हैंPAUSE
रोवेको

66

पाइथन में (प्रश्न मूल रूप से पाइथन को टैग किया गया था) आपको समय मॉड्यूल आयात करने की आवश्यकता है

import time
time.sleep(1)

या

from time import sleep
sleep(1)

शेल स्क्रिप्ट के लिए बस है

sleep 1

जो sleepकमांड को निष्पादित करता है । जैसे।/bin/sleep


5
हाँ, यह यह भी कहता है, यह सिर्फ एक दूसरे को पहले था, और इसका एक अच्छा उदाहरण है :) लेकिन +1!

3
इसलिए इसे करने का सही तरीका नहीं है, आप :) के python -c "import time; time.sleep(1)"बजाय का उपयोग करके बैश के साथ अजगर के उत्तर को जोड़ सकते हैंsleep 1
बेरी एम।

2
@BerryM। - जब मैं कोशिश करता हूं तो लगभग 1.2 सेकंड लगते हैं। अजगर तुरंत शुरू नहीं करता है - आपको इसके लिए खाते की आवश्यकता है। इसकी python -c "import time; time.sleep(0.8)"जगह बनाएं । लेकिन तब हमें इस बात पर ध्यान देना होगा कि वास्तव में अजगर स्टार्टअप को कितना समय लेता है। आपको इसे चलाने की आवश्यकता है: date +%N; python -c "import time; time.sleep(0)"; date +%Nयह निर्धारित करने के लिए कि कितने नैनोसेकंड अजगर शुरू करने के लिए ले रहे हैं। लेकिन इसमें रनिंग डेट से कुछ ओवरहेड भी शामिल है। date +%N; date +%Nउस ओवरहेड को खोजने के लिए इसे चलाएं । मेरी मशीन पर अजगर का ओवरहेड वास्तव में 0.14 सेकंड के करीब था। इसलिए मैं चाहता हूं time.sleep(0.86)
आर्टऑफवर्फ

यह सच है, तो आप कभी नहीं मिलेगा, हालांकि वास्तव में 1000ms, यहां तक कि उस तरह नहीं।
बेरी एम।

आमतौर पर कल्पना कम से कम दी गई राशि है, जो आमतौर पर नींद के उद्देश्य के अनुरूप होती है।
मर्लिन पियर्स

40

मुझे एहसास है कि मैं इसके साथ थोड़ा लेट हो गया हूं, लेकिन आप नींद को भी बुला सकते हैं और निस्संदेह समय को पास कर सकते हैं। उदाहरण के लिए, अगर मैं 3 सेकंड तक इंतजार करना चाहता था तो मैं कर सकता हूं:

/bin/sleep 3

4 सेकंड इस तरह दिखेंगे:

/bin/sleep 4

5
बस इस पर ठोकर खाई, क्योंकि शीर्ष मतदान का जवाब है, @RyndallCooper, लगभग एक साल पहले पागल, -59x कई बिंदुओं के रूप में और बहुत अधिक गहराई में जाता है, और यह अभी भी हाल ही में होने से बस इसके ऊपर दिखाई देता है।
एफिड

2
@AidanEdwards यह मेरे लिए भी शीर्ष उत्तर था जब तक कि मैं "वोट" (जो डिफ़ॉल्ट नहीं है - मुझे लगता है कि यह कैसे "सक्रिय" पर सेट हो गया?)। हालांकि इसे "वोट" पर सेट करना तय है। अजीब।
क्रिश्चियनबॉडी

1
@stackoverflow - आप लोगों को बदलना चाहिए कि यह कैसे काम करता है ... शीर्ष मतदान को हमेशा पहले रखें!
देइयन

3
"यह इसलिए है क्योंकि शीर्ष-मतदान जवाब ... अभी भी यह हाल ही में अधिक होने से ऊपर दिखाई देता है" - उह, नहीं, किसी को भी इस तरह के तुच्छ कारणों के लिए एक वोट का जवाब नहीं देना चाहिए जो उस उत्तर में खराब सामग्री से संबंधित नहीं है।
निकोलस पीटर्सन

35

मैक OSX पर, नींद में मिनट / आदि नहीं लगते हैं, केवल कुछ सेकंड। तो दो मिनट के लिए,

sleep 120

27

कई स्लीप और कमांड चलाएं

sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..

यह पहली स्क्रिप्ट को निष्पादित करने से पहले 5 सेकंड के लिए इंतजार करेगा, फिर 3 सेकंड के लिए फिर से सो जाएगा इससे पहले कि यह फिर से निर्देशिका बदल जाए।


4
+1 ... क्यूज यदि आप नींद के बाद एक एम्परसेंड का उपयोग करते हैं तो यह अपने स्वयं के थ्रेड को सोता है तो तुरंत अगली कार्रवाई शुरू करता है (यानी नींद अगली कार्रवाई में देरी नहीं करता है)
जे मर्म

18

स्क्रिप्ट के भीतर आप उन कार्यों के बीच निम्नलिखित जोड़ सकते हैं जिन्हें आप रोकना चाहते हैं। यह 5 सेकंड के लिए दिनचर्या को रोक देगा।

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."

यह अभ्यस्त वास्तव में काम करेगा? मुझे लगता है कि -t 5यह 5 सेकंड के बाद स्क्रिप्ट को रद्द कर देगा, जारी नहीं रहेगा, कम
ब्रैड पार्क्स

@BradParks हाँ यह काम करेगा बस मामले में: रूट @ Joses-iPad: ~ # cat readtest.bash #! / Bin / bash echo "यहाँ" पढ़ें -p "समय 5 सेकंड रोकें" -t 5 पढ़ा -p जारी रखें! 5 सेकंड .... "-t 5 इको" कंटीन्यूइंग .... "इको" रूट "जॉज़-आईपैड": ~ # कैट री ।/st.bash यहां 5 सेकंड में 5 सेकंड रोकें .... जारी है। .... वहाँ
जोस एच। रोजा

हम्मम .... मुझे लगता है कि तुम सही हो! मैंने सोचा कि मैंने यह कोशिश की, लेकिन मैंने इसे फिर से आजमाया और यह विज्ञापन के रूप में काम करता है। धन्यवाद!
ब्रैड पार्क

5

read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s

जारी रखने के लिए जब आप कोई एक बटन दबाते हैं


7
हालांकि यह कोड स्निपेट समाधान हो सकता है, स्पष्टीकरण सहित वास्तव में आपके पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
मयूर

1
यह उत्तर एक कोड-केवल टिप्पणी है। यह दिए गए कोड को समझाने का प्रयास नहीं करता है। मुझे लगता है कि पोस्टर ने इस सवाल का गलत अर्थ
निकाला है

2

आप इसे $ RANDOM, एक डिफ़ॉल्ट यादृच्छिक संख्या जनरेटर का उपयोग करके प्रतीक्षा कर सकते हैं। नीचे में मैं 240 सेकंड का उपयोग कर रहा हूं। उम्मीद है की वो मदद करदे @

> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS

1

चलाने से पहले कमांड लाइन को रोकने और जांचने के लिए ट्रैप का उपयोग करें

trap 'tput setaf 1;tput bold;echo $BASH_COMMAND;read;tput init' DEBUG

जारी रखने के लिए कोई भी कुंजी दबाएँ

set -xडिबग कमांड लाइन के साथ उपयोग करें

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