सेकंड के बाद एक्सक्यूट कमांड (बिना नींद के)


15

मैं नींद के बिना एक्स सेकंड के बाद एक कमांड कैसे चला सकता हूं। या नींद के साथ लेकिन शेल के बिना बस उस आदेश की प्रतिक्रिया का इंतजार करें?

मैंने इसका इस्तेमाल किया लेकिन यह काम नहीं किया

sleep 5 ; ls > a.txt

मुझे इसे पृष्ठभूमि में चलाने की आवश्यकता है। मैं इसे एक स्क्रिप्ट में नहीं चलाने की कोशिश करता हूं जिसे मैं ls5 सेकंड के बाद चलाने की कोशिश करता हूं , और शेल सिर्फ नींद के अंत तक इंतजार नहीं करता है


यह शेल के बिना काम क्यों नहीं करता है? आपको कौन सी त्रुटि मिलती है? क्या आप इसे पूरा रास्ता बता रहे हैं? क्या आप जानते हैं कि कौन सा हिस्सा पर्स करता है ;?
हेन्नेस

इस तरह से शेल 5 सेकंड ब्लॉक करेगा और फिर कमांड चलाएगा।, जिस शेल को रोकना है, मुझे इसकी आवश्यकता नहीं है।
मार्टिन

फिर आपको या तो इसे पृष्ठभूमि में एक स्क्रिप्ट में, या एक उप-शेल में शुरू करने की आवश्यकता है।
हेन्नेस

जवाबों:


34

हाइनेस ने जो सुझाव दिया था, उसे लिखने का एक और संक्षिप्त तरीका

(sleep 5; echo foo) & 

वैकल्पिक रूप से, यदि आपको कुछ सेकंड से अधिक की आवश्यकता है, तो आप उपयोग कर सकते हैं at । आदेश देने के तीन तरीके हैं at:

  1. इसे पाइप करें:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. उस कमांड को सेव करें जिसे आप टेक्स्ट फाइल में चलाना चाहते हैं, और फिर उस फाइल को पास करें at:

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. आप भी पास कर सकते हैं at STDIN से कमांड :

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    फिर, CtrlDबाहर निकलने के लिए दबाएँat शेल । lsआदेश एक मिनट में चलाया जाएगा।

के प्रारूप में आप बहुत सटीक समय दे सकते हैं [[CC]YY]MMDDhhmm[.ss] , जैसे कि

$ at -t 201412182134.12 < script.sh

यह script.sh18 दिसंबर 2014 को 21:34 और 12 सेकंड पर स्क्रिप्ट चलाएगा । इसलिए, सिद्धांत रूप में, आप atभविष्य में पांच सेकंड चलाने के लिए उपयोग कर सकते हैं। हालांकि, यह थोड़े मक्खी की तरह एक टैंक का उपयोग करने के लिए है, और हेन्नेस का सुझाव बेहतर है।


मैं अपने साथ खिलवाड़ करता $(sleep 5; echo foo) &रहा, मुझे यकीन नहीं है कि मुझे लगा कि मुझे उसके सामने $ $ की जरूरत है, लेकिन मेरे वाक्यविन्यास गलत होने के साथ मैंने अभी (और अधिक समझने योग्य) संस्करण पोस्ट किया है। (command_for_in_new_shell) हालांकि छोटा है।
हेन्नेस

@ हेन्स और मैंने आपके बहुत अच्छे विचार (जो मैंने अपवित्र किए) को बड़बड़ाया। मैंने जो भी किया था, उसे छोटा करने के लिए सुधार किया था, वास्तविक सोच के बिट्स के लिए सभी श्रेय आपका है :)।
टेराडॉन

क्या atसेकंड में देरी के साथ उपयोग करने का कोई तरीका है ?
निधि मोनिका का मुकदमा

@ नीचार्टली नं। at 21:43यदि आप चाहते हैं कि एक विशिष्ट समय (जैसे ) का उपयोग करें , या सिर्फ 4 सेकंड के बाद sleep 4 && commandचलाने के लिए कुछ सरल करना पसंद करें command
टेराडॉन

4

आप पृष्ठभूमि में एक शेल या एक स्क्रिप्ट शुरू करके इसके चारों ओर काम कर सकते हैं।

उदाहरण:

/ बिन / श-सी "स्लीप 5; इको फू" और
[१] ६३ 1 ९ १
> यहां सक्रिय शेल प्रॉम्प्ट

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