पृष्ठभूमि में एक अनंत लूप कैसे चलाएं


17

मैं स्क्रिप्ट के निष्पादन के साथ जारी रखते हुए, पृष्ठभूमि में एक अनंत लूप कैसे चला सकता हूं?

उदाहरण "स्क्रिप्ट":

while true; do something_in_the_background; done

do_something_while_the_loop_goes_on_in_the_background

for 1 2 3; do somethingelse; done

exit 0

यह (नोटिस &) थोड़ी देर के बाद पूरे सिस्टम को क्रैश करने के लिए लगता है:

while true; do
  something_in_the_background &
done

do_something_while_the_loop_goes_on_in_the_background

for 1 2 3; do somethingelse; done

exit 0

आश्चर्य नहीं कि आप बहुत सारी प्रक्रियाएँ बना रहे हैं।
एड हील

फोर्क बम के लिए दिशा निर्देश पूछ रहे हैं?
बाजीगर

1
क्या आप कृपया पृष्ठभूमि में एक अनंत लूप चलाने के पीछे का इरादा बता सकते हैं?
न्यूरॉन

जवाबों:


31

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

while /bin/true; do
    something_in_the_background
done &

# more stuff

10
while : ; do something ; done &
  • पहले बॉर्न के गोले नहीं थे trueऔर falseअंतर्निहित कमांड के रूप में। trueइसके बजाय बस करने के लिए :और falseकुछ करने के लिए उपनाम दिया गया था let 0

  • & लाइन पृष्ठभूमि के अंत में प्रक्रिया

  • : null कमांड है, जैसा कि "सहायता:" द्वारा वर्णित है: No effect; the command does nothing. Exit Status: Always succeeds.

2
आपके उत्तर को यह बताकर बहुत बेहतर किया जाएगा - ओपी को पता नहीं हो सकता है कि :इसका क्या मतलब है और शायद आपको पता नहीं है कि आप &अंत में क्यों चले गए हैं । इसके अलावा, इसे एक-लाइनर बनाने के लिए रिक्ति को बदलना सिर्फ भ्रमित करना है - यह एक ऐसा बदलाव है जो बहुत ही दृश्यमान है, लेकिन पूरी तरह से महत्वहीन है।
व्युत्पन्न

अपनी समीक्षाओं के अनुसार पोस्ट को संपादित किया
John

0

.1 या .01 सेकंड की नींद लाना आपके पाश को सीपीयू के अनुकूल बनाता है। लेकिन जैसा कि बताया गया है कि एरिक रेनॉफ, और लूप के अंत में होना चाहिए, इसके अंदर नहीं।

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