2012-11-12 14 views
40

मैं एक सिस्टम प्रशासक हूं और मुझे सिस्टम को साफ करने के लिए लिनक्स स्क्रिप्ट चलाने के लिए कहा गया है।लिनक्स कमांड के अंत में "&" क्या होता है?

आदेश यह है:

perl script.pl > output.log & 

तो इस आदेश को एक & चिन्ह के साथ समाप्त हो रहा है, वहाँ इसके किसी भी विशेष महत्व है?

मेरे पास खोल का मूल ज्ञान है लेकिन मैंने इसे पहले कभी नहीं देखा है।

+0

यूनिक्स से –

+0

के लिए ध्वज पहला कदम, "मैन बैश"। –

+0

मुझे बुरा लगता है, मुझे इस तरह की मूल सामग्री के बारे में पता था – Dude

उत्तर

73

& पृष्ठभूमि में आदेश चलाता है।

man bash से:

एक कमांड नियंत्रण ऑपरेटर & द्वारा समाप्त होने पर, खोल एक subshell में पृष्ठभूमि में आदेश निष्पादित करता है। खोल समाप्त करने के लिए आदेश के लिए प्रतीक्षा नहीं है, और वापसी स्थिति है 0.

8

इसके अलावा, आप उपयोग कर सकते हैं "&" एक (1) क्रम में ssh कनेक्शन के माध्यम से कई प्रक्रियाओं को चलाने के लिए साइन-इन करें टर्मिनल की न्यूनतम संख्या रखने के लिए। उदाहरण के लिए, मेरे पास एक प्रक्रिया है जो फ़ाइलों को निकालने के लिए संदेशों की सुनती है, दूसरी प्रक्रिया फाइल अपलोड करने के लिए संदेशों के लिए सुनती है: "&" का उपयोग करके मैं अपने सर्वर पर एकल एसएसएच कनेक्शन के माध्यम से एक टर्मिनल में दोनों सेवाएं चला सकता हूं ।


***** मुझे अभी एहसास हुआ कि एसएस सत्र बंद होने के बाद "" के माध्यम से चल रही ये प्रक्रियाएं भी "जीवित रहेंगी"! सर्वर से आपका कनेक्शन बाधित है **

+0

'नोहुप' भी प्रक्रियाओं को जीवित रखेगा। –

2

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

sh my_script.sh & 

एक पृष्ठभूमि प्रक्रिया के बाद खोल सत्र बंद कर दिया है जिंदा नहीं रहना होगा। SIGHUP सभी चल रही प्रक्रियाओं को समाप्त करता है। वैसे भी डिफ़ॉल्ट रूप से। अपने आदेश को अनिश्चित काल के लंबे समय से चल रहा है या रन है (यानी: microservice):

nohup sh my_script.sh & 

संपादित करें: आप PR pend करने nohup के साथ तो यह चल रहा है रहता है आप सत्र से डिस्कनेक्ट के बाद की जरूरत है वहाँ करने के लिए प्रकट होता है & का उपयोग होने पर पृष्ठभूमि प्रक्रियाओं को बंद करने के संबंध में एक ग्रे क्षेत्र बनें। बस जागरूक रहें कि खोल आपके ओएस और स्थानीय कॉन्फ़िगरेशन (विशेष रूप से CENTOS/RHEL पर) के आधार पर आपकी प्रक्रिया को बंद कर सकता है: https://serverfault.com/a/117157

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