मेरे पास 4 कमांड हैं जिन्हें मैं चलाना चाहता हूं:

sudo mkdir -p /data/db && \
sudo chmod 755 /data/db && \
sudo chown -R addison.pan: /data && \
mongod &

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

3
Daniel Kaplan 11 मई 2018, 01:49

4 जवाब

सबसे बढ़िया उत्तर

एक या अधिक कमांड को एक अलग प्रक्रिया में चलाने के लिए, कमांड की उस श्रृंखला को कोष्ठक में संलग्न करें। जैसा कि सिंगल यूनिक्स विशिष्टता में निर्दिष्ट है, §2.9.4 "कंपाउंड कमांड" :

( compound-list )

उपकोश परिवेश में यौगिक-सूची निष्पादित करें […]

समान शेल प्रक्रिया में एक या अधिक कमांड को समूहबद्ध करने के लिए, कमांड की उस श्रृंखला को घुंघराले ब्रेसिज़ में संलग्न करें:

{ compound-list ; }

मौजूदा प्रक्रिया परिवेश में यौगिक-सूची निष्पादित करें। […]

यह किसी भी POSIX शेल के लिए सही है (इसलिए यह बैश में भी काम करता है< / ए>)।

तो आपका उदाहरण इसमें बदला जा सकता है:

sudo mkdir -p /data/db && \
sudo chmod 755 /data/db && \
sudo chown -R addison.pan: /data && \
( mongod & )

यह अच्छा हो सकता है क्योंकि आप mongod प्रक्रिया को अलग करना चाहते हैं। दूसरी ओर, अधिक सामान्य उत्तर कमांड की सूची को भीतर समान शेल प्रक्रिया में समूहित करना होगा:

sudo mkdir -p /data/db && \
sudo chmod 755 /data/db && \
sudo chown -R addison.pan: /data && \
{ mongod & }

इन दोनों का वर्णन उपरोक्त प्रलेखन संदर्भों में किया गया है।

3
bignose 11 मई 2018, 02:33

स्पष्टवादी बनें। शॉर्ट-सर्किट का उपयोग करने के लिए सिंटैक्स का दुरुपयोग करने का प्रयास करने की कोई आवश्यकता नहीं है:

if \
    sudo mkdir -p /data/db \
    && sudo chmod 755 /data/db \
    && sudo chown -R addison.pan: /data
then
    mongod & 
fi
2
William Pursell 11 मई 2018, 02:45

माता-पिता का प्रयोग करें:

sudo mkdir -p /data/db && \
sudo chmod 755 /data/db && \
sudo chown -R addison.pan: /data && \
(mongod &)
0
abelenky 11 मई 2018, 01:51

उदाहरण के लिए, आप sudo में कई कमांड चला सकते हैं:

sudo sh -c 'mkdir -p /data/db && chmod 755 /data/db && chown -R <user>: /data' \
&& mongod &
0
nbari 11 मई 2018, 02:19