निश्चित समय के लिए बैश रन कमांड?


11

मैं अपने उपयोग के लिए बैश स्क्रिप्ट बना रहा हूं। मैं कुछ समय के लिए कमांड कैसे चला सकता हूं, जैसे 20 सेकंड और टर्मिनेट कमांड? मैंने बहुत सारे समाधान की कोशिश की लेकिन कुछ भी काम नहीं आया, मैंने बिना किसी सफलता के टाइमआउट कमांड की भी कोशिश की। कृपया इसके लिए मुझे कोई उपाय बताएं।

उदाहरण के लिए: मैं 10 सेकंड के बाद स्क्रिप्ट और टर्मिनल में इस कमांड को चलाना चाहता हूं

some command

जवाबों:


13

हम्म, कि चाल करना चाहिए:

xmessage "Hello World" &
pidsave=$!
sleep 10; kill $pidsave

xmessage यहां एक त्वरित परीक्षण मामला प्रदान करता है (आपके मामले में एरोडम्प कमांड को वहां जाना चाहिए); & इसे पृष्ठभूमि में रखता है।

$! अंतिम आरंभ प्रक्रिया की PID रखता है (उदा। देखें) https://stackoverflow.com/a/1822042/2037712 ); PID वैरिएबल में सेव हो जाता है pidsave

कुछ इंतजार के बाद ( sleep ), भेजें TERM प्रक्रिया का संकेत।


धन्यवाद दोस्त यह काम करता है, लेकिन अब मेरे पास 1 समस्या है। मैं आउटपुट देखना चाहता हूं जो कमांड द्वारा बनाया गया है लेकिन xmessage विंडोज़ कुछ भी नहीं दिखाती है।
Umair Riaz

@UmairRiaz: xmessage सिर्फ एक उदाहरण था। प्रश्न में अपने उदाहरण को अनुकूलित करने के लिए और कमांड के उपयोग का आउटपुट लॉग करें some command > logfile & पहली पंक्ति में। बाद में आप विश्लेषण कर सकते हैं logfile
mpy

4

बैश प्रॉम्प्ट से आप उपयोग कर सकते हैं "


1

दूसरा तरीका है pgrep $ पैटर्न, या pkill $ पैटर्न का उपयोग करना; मशीन पर सभी चल रही प्रक्रियाओं को देखते हुए, दिए गए पैटर्न से मेल खाते सभी पीआईडी ​​लौटाता है। इसलिए पीआईडी ​​के दायरे को केवल उन लोगों तक सीमित करें, जिनके आप खुद उपयोग करते हैं: pgrep -P $ mypid $ पैटर्न, या pkill -P $ mypid $ पैटर्न

तो समय की एक निर्धारित अवधि के लिए एक पृष्ठभूमि प्रक्रिया चलाने के लिए, आपकी स्क्रिप्ट कुछ इस तरह दिखाई देगी:

#!/bin/bash 
mypid=$$
run_something &
sleep $time_in_seconds
pkill -P $mypid something

ध्यान रखें कि यह सभी प्रक्रियाओं को एक ही नाम पैटर्न के साथ चालू माता-पिता पीआईडी ​​के तहत चलाएगा। तो आप कई प्रक्रियाओं को शुरू करने के लिए इसका उपयोग कर सकते हैं, और एक निश्चित समय के बाद उन सभी को एक साथ मार सकते हैं।

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