2012-03-29 11 views
10

कमांड निष्पादित करें तो, मैं सोच रहा था कि कोई बैश कमांड था जो मुझे एक प्रक्रिया को फोर्क करने देता है जो कई सेकंड तक सोता है, फिर कमांड निष्पादित करता है।बैश स्क्रिप्ट नई प्रक्रिया में कैसे सोएं, फिर

यहाँ एक उदाहरण है:

sleep 30 'echo executing...' & 

^यह वास्तव में काम नहीं करता है (क्योंकि नींद आदेश केवल समय तर्क लेता है), लेकिन वहाँ कुछ है कि कुछ इस तरह कर सकता है? तो, मूल रूप से, एक नींद कमांड जो अंतराल पूरा होने पर एक समय तर्क और निष्पादित करने के लिए कुछ लेता है? मैं इसे एक अलग प्रक्रिया में फंसाने में सक्षम होना चाहता हूं, फिर खोल स्क्रिप्ट को संसाधित करना जारी रखूंगा।

इसके अलावा, मुझे पता है कि मैं एक साधारण स्क्रिप्ट लिख सकता हूं जो ऐसा करता है, लेकिन स्थिति के कुछ बाधाओं के कारण (मैं वास्तव में इसे एसएसआई कॉल के माध्यम से पास कर रहा हूं), मैं ऐसा नहीं करना चाहूंगा।

उत्तर

10

आप पृष्ठभूमि में एक अन्य सुरक्षा आह्वान कर सकते हैं और यह आप क्या चाहते हैं करते हैं:

bash -c 'sleep 30; do-whatever-else' & 

नींद के लिए डिफ़ॉल्ट अंतराल सेकंड में है, इसलिए ऊपर 30 सेकंड के लिए सोने के हैं। आप अन्य अंतराल जैसे 30m 30 मिनट के लिए, या 1h 1 घंटे के लिए, या 3d 3 दिनों के लिए निर्दिष्ट कर सकते हैं।

+0

धन्यवाद! वह चाल है। :) – David

21

आप का उपयोग करना है, क्योंकि यह सुनिश्चित करता है कि command ... चलेगा अगर नींद टाइमर समाप्त हो रहा है && सुरक्षित से ; है

(sleep 30 && command ...)& 

कर सकते हैं।

+0

धन्यवाद! बहुत साफ! – cwohlman

संबंधित मुद्दे