शेल में एक निर्धारित समय के लिए आवेदन कैसे चलाएं


12

अगर Terminal, बंद करने से पहले, और उस प्रक्रिया के लॉग को गूँजने से पहले, 30 सेकंड के लिए चलाने के लिए एक आवेदन पत्र प्राप्त करना संभव है, तो यह कैसे और कैसे संभव है ?


@JacobVlijm यह भाषा के पोर्टेबिलिटी के कारण एक शेल स्क्रिप्ट के रूप में आदर्श रूप से चलेगा, मुख्य रूप से उपयोग के उद्देश्य क्षेत्र एक CI सेवा है।
ir-g

1
@ ir-g आप टाइमआउट कमांड का उपयोग कर सकते हैं । जैसे टाइमआउट 30s कमांड
mcantsin

जवाबों:


19

आप टाइमआउट कमांड का उपयोग करना चाह सकते हैं ।

timeout -k 10s 30s command

जो 30 के लिए कमांड को चलाएगा और अगर चल रहा है तो 10 के बाद उसे मार देगा। - अधिक विकल्पों के लिए मैनपेज की जाँच करें।


1
@ ir-g आपका स्वागत है। आप वॉच कमांड को भी देख सकते हैं , जो कि समान है और कमांड लाइन में उपयोग करना भी बहुत आसान है।
mcantsin

2
उस सूचक के लिए धन्यवाद, watchमुझे एक बहुत ही दिलचस्प आदेश के रूप में हमला करता है। काम आ सकता है ...
ir-g

3

यहाँ दो तरीके हैं (लेकिन mcantsin द्वारा सुझाई गईtimeout कमांड शायद बेहतर है):

  1. कमांड को पृष्ठभूमि में लॉन्च करें, इस तरह से उसका पीआईडी ​​बच जाता है $!और आप इसे निर्दिष्ट समय के बाद मारने के लिए उपयोग कर सकते हैं:

    command &
    sleep 30 && kill $!
  2. कमांड लॉन्च करें और इसका उपयोग करें pkillया killallइसे मार दें। चेतावनी: यह मानता है कि उस नाम के साथ केवल एक आदेश चल रहा है, मैं firefoxएक उदाहरण के रूप में उपयोग कर रहा हूं :

    firefox &
    sleep 30 && pkill firefox

मुझे नहीं पता कि आप "उस प्रक्रिया के लॉग" से क्या मतलब है, लेकिन एक प्रक्रिया की मानक त्रुटि के साथ एक फ़ाइल में सहेजा जा सकता है command 2> logfile.txt

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