मैं पूरी तरह से टर्मिनल से एक प्रक्रिया को कैसे अलग करूं?


304

मैं अपने "कमांड सेंट्रल" के रूप में उबंटू पर टिल्डा (ड्रॉप-डाउन टर्मिनल) का उपयोग करता हूं - जिस तरह से अन्य लोग गनोम डू, क्विकसिल्वर या लॉन्ची का उपयोग कर सकते हैं।

हालाँकि, मैं इस बात से जूझ रहा हूँ कि टर्मिनल से पूरी तरह से एक प्रक्रिया (जैसे फ़ायरफ़ॉक्स) को कैसे शुरू किया जाए - यानी कि ऐसी (गैर-) बाल प्रक्रिया को रोकें।

  • मूल टर्मिनल को बंद करते समय समाप्त किया जाता है
  • "प्रदूषण" STDOUT / STDERR के माध्यम से मूल टर्मिनल

उदाहरण के लिए, विम को "उचित" टर्मिनल विंडो में शुरू करने के लिए, मैंने निम्नलिखित की तरह एक सरल स्क्रिप्ट की कोशिश की है:

exec gnome-terminal -e "vim $@" &> /dev/null &

हालाँकि, यह अभी भी प्रदूषण का कारण बनता है (यह भी, एक फ़ाइल नाम से गुजरना काम नहीं करता है)।


1
वह भी एक अच्छा सवाल है। मुझे लगता है कि बैश को एक प्रोग्रामिंग लैंग्वेज पर विचार करना उचित है - हालाँकि वास्तव में इस सवाल का दायरा शायद

यह इस प्रश्न का एक डुप्लिकेट है stackoverflow.com/questions/285015/…
Dana the Sane

का डुबकी: सुपरसुअर.
com

आपका उपयोग मामला प्रति पूर्ण टुकड़ी का वर्णन नहीं करता है।
जिगगंजर

जवाबों:


344

सबसे पहले; एक बार जब आप एक प्रक्रिया शुरू कर देते हैं, तो आप इसे पहले (हिट Ctrl- Z) को रोककर bgपृष्ठभूमि में फिर से शुरू करने के लिए टाइप करके इसे पृष्ठभूमि कर सकते हैं। यह अब एक "नौकरी" है, और इसके stdout/ stderr/ stdinअभी भी आपके टर्मिनल से जुड़े हुए हैं।

आप इसके अंत तक "&" जोड़कर एक प्रक्रिया शुरू कर सकते हैं:

firefox &

खामोश पृष्ठभूमि में इसे चलाने के लिए, इसका उपयोग करें:

firefox </dev/null &>/dev/null &

कुछ अतिरिक्त जानकारी:

nohupएक ऐसा प्रोग्राम है, जिसका उपयोग आप अपने एप्लिकेशन को चलाने के लिए कर सकते हैं ताकि इसके स्टडआउट / स्टॉडर को इसके बजाय किसी फ़ाइल में भेजा जा सके और इस तरह कि पैरेंट स्क्रिप्ट को बंद करने से बच्चे को कोई परेशानी न हो। हालाँकि, आवेदन शुरू करने से पहले आपको इसका उपयोग करने की दूरदर्शिता होनी चाहिए। nohupकाम करने के तरीके के कारण , आप इसे केवल एक रनिंग प्रक्रिया पर लागू नहीं कर सकते ।

disownएक बैश बिलिन है जो शेल की जॉब लिस्ट से शेल जॉब को हटा देता है। क्या यह मूल रूप से मतलब है कि आप उपयोग कर सकते हैं नहीं है fg, bgअब और उस पर है, लेकिन अधिक महत्वपूर्ण बात, जब आप अपने खोल बंद लटका या नहीं भेजेंगे SIGHUPअब और उस बच्चे के लिए। इसके विपरीत nohup, प्रक्रिया शुरू होने और पृष्ठभूमि के बादdisown इसका उपयोग किया जाता है ।

आप जो नहीं कर सकते , उसे शुरू करने के बाद एक प्रक्रिया के stdout / stderr / stdin को बदल दें। कम से कम शेल से तो नहीं। यदि आप अपनी प्रक्रिया लॉन्च करते हैं और यह बताते हैं कि इसका स्टडआउट आपका टर्मिनल है (जो कि आप डिफ़ॉल्ट रूप से करते हैं), तो उस प्रक्रिया को आपके टर्मिनल पर आउटपुट के लिए कॉन्फ़िगर किया गया है। आपके शेल का प्रक्रियाओं की एफडी सेटअप के साथ कोई व्यवसाय नहीं है, यह विशुद्ध रूप से कुछ प्रक्रिया है जो स्वयं प्रबंधित करता है। यह प्रक्रिया स्वयं तय कर सकती है कि इसके स्टडआउट / स्टैडर / स्टडिन को बंद करना है या नहीं, लेकिन आप इसे करने के लिए बाध्य करने के लिए अपने शेल का उपयोग नहीं कर सकते हैं।

बैकग्राउंड प्रोसेस के आउटपुट को प्रबंधित करने के लिए, आपके पास स्क्रिप्ट्स से बहुत सारे विकल्प होते हैं, "नोहप" संभवतः सबसे पहले दिमाग में आता है। लेकिन इंटरेक्टिव प्रक्रियाओं के लिए आप शुरू करते हैं लेकिन चुप रहना भूल गए ( firefox < /dev/null &>/dev/null &) आप वास्तव में बहुत कुछ नहीं कर सकते।

मैं आपको जीएनयू प्राप्त करने की सलाह देता हूं screen। स्क्रीन के साथ आप केवल अपने रनिंग शेल को बंद कर सकते हैं जब प्रक्रिया का आउटपुट एक परेशान हो जाता है और एक नया खोल देता है ( ^Ac)।


ओह, और वैसे भी, " $@" का उपयोग न करें जहाँ आप इसका उपयोग कर रहे हैं।

$@इसका मतलब है, $1, $2, $3..., जो में अपने आदेश की बारी जाएगा:

gnome-terminal -e "vim $1" "$2" "$3" ...

शायद यह नहीं है कि आप क्या चाहते हैं, क्योंकि वे केवल एक तर्क लेते हैं। $1यह दिखाने के लिए उपयोग करें कि आपकी स्क्रिप्ट केवल एक तर्क को संभाल सकती है।

आपके द्वारा दिए गए (के साथ gnome-terminal -e) परिदृश्य में ठीक से काम करने वाले कई तर्कों को प्राप्त करना वास्तव में मुश्किल है क्योंकि -eकेवल एक तर्क है, जो एक शेल कमांड स्ट्रिंग है। आपको अपने तर्कों को एक में बदलना होगा। सबसे अच्छा और सबसे मज़बूत, बल्कि बदरंग, रास्ता ऐसा है:

gnome-terminal -e "vim $(printf "%q " "$@")"

इसके लिए बहुत - बहुत धन्यवाद! दुख की बात है कि मैं केवल एक उत्तर को स्वीकार कर सकता हूं। मैंने "nohup $ @ &> / dev / null &" और "उपनाम wvim = 'launch.sh gnome-terminal -x vim' के साथ

20
क्या एक काल्पनिक रूप से विस्तृत और जानकारीपूर्ण उत्तर। +1
तेईकिन

1
@ हाय-एंजेल जब आप एक इंटरैक्टिव बैश शेल को बंद करते हैं, तो एचयूपी को सभी सक्रिय नौकरियों को बैश करें। जब आप ^ Z और bg एक प्रक्रिया करते हैं तो यह अभी भी एक काम है, यह एक पृष्ठभूमि हो। इसे नौकरी के रूप में हटाने के लिए, उपयोग करें disown, फिर प्रक्रिया आपके द्वारा शेल को बंद करने के बाद जीवित रहेगी क्योंकि बैश अब इसे एचयूपी नहीं करेगा।
लुननाथ

3
पहले से ही अलग तार की समस्या को ठीक करने के $*बजाय उपयोग नहीं करेंगे $@?
शज

2
आप जो नहीं कर सकते, उसे शुरू करने के बाद एक प्रक्रिया के stdout / stderr / stdin को बदल दें। - बिल्कुल सच नहीं है। इसके लिए उपयोग reptyrकरें।
स्टेफन सेडेल

198
nohup cmd &

nohup इस प्रक्रिया को पूरी तरह से समाप्त कर देता है (इसे निष्क्रिय कर देता है)


5
यद्यपि सक्सेस मूल्यवान है, पूर्णता अधिक मूल्यवान है। हालांकि नोहाप एक जीएनयू कोरुटिल है, एक बैश-केवल उत्तर (या वहाँ एक नहीं होने के बारे में ध्यान दें) उपयुक्त होगा। फिर भी अच्छा जवाब।
लिमिटेड प्रायश्चित

23
nohupबस SIGHUPसंकेत की अनदेखी करता है। यह प्रक्रिया को सामान्य रूप से निष्पादित करता है। कोई डामरीकरण नहीं।
नीमो

1
@nemo जिसका अर्थ है कि प्रक्रिया को अलग नहीं किया गया है, लेकिन initयदि शेल बाहर निकलता है तो यह अलग हो जाएगा (और एक बच्चे का ) ... सही?
नोल्डोरिन

@ नोल्डोरिन हाँ। शेल को समाप्त करने के बाद भेजे जाने वाले SIGHUP को अनदेखा करना, चल रही बाल प्रक्रिया को छोड़ देगा और टिट में स्थानांतरित हो जाएगा।
nemo

@nemo nohup भी / outs में मानक मौन है। पूरी तरह से अलग करने के लिए भंग के साथ पालन करें।
जिग्गंजर

60

यदि आप उपयोग कर रहे हैं bash, तो कोशिश करें ; देख बैश (1)disown [jobspec]

एक और तरीका जो आप आजमा सकते हैं, वह है at now। यदि आप सुपरसियर नहीं हैं, तो आपके उपयोग की अनुमति atप्रतिबंधित हो सकती है।


"डिसऑन" एक आंतरिक बैश कमांड नहीं लगता है (मेरी मशीन पर उपलब्ध नहीं है, और मैं बैश का उपयोग करता हूं)। "nohup", जैसा कि बेन ने सुझाव दिया, ऐसा करने का एक बेहतर (और मानक) तरीका हो सकता है।

1
"पर" का उपयोग करने के बारे में कभी नहीं सोचा, विचार के लिए धन्यवाद!
कैडरियन

1
atकिसी और को फांसी देना, मुझे यह पसंद है! +1
निंसुओ

1
एक संदर्भ के zshरूप में, यह भी काम करता है ।
कोडर

1
इसके अलावा, disownवांछित प्रभाव के साथ है करने के लिए प्रतीत नहीं होता है gnome-terminal- disownएड प्रक्रियाओं अभी भी मारे गए हैं जब टर्मिनल से बाहर निकलता है। मुझे यह जानना अच्छा लगेगा कि क्यों / कैसे।
काइल स्ट्रैंड

38

इन उत्तरों को पढ़ते हुए, मैं शुरुआती धारणा के तहत था कि जारी nohup <command> &करना पर्याप्त होगा। सूक्ति-टर्मिनल में दौड़ते हुए, मैंने पाया कि nohup <command> &मेरे खोल को बाहर निकलने पर बाल प्रक्रियाओं को मारने से नहीं रोका गया था। यद्यपि nohupयह उपयोगी है, विशेष रूप से गैर-संवादात्मक गोले के साथ, यह केवल इस व्यवहार की गारंटी देता है यदि बच्चे की प्रक्रिया SIGHUPसिग्नल के लिए अपने हैंडलर को रीसेट नहीं करती है।

मेरे मामले में, nohupहैंगअप सिग्नल को एप्लिकेशन तक पहुंचने से रोकना चाहिए था, लेकिन चाइल्ड एप्लिकेशन (इस मामले में VMWare प्लेयर) अपने SIGHUPहैंडलर को रीसेट कर रहा था । परिणामस्वरूप जब टर्मिनल एमुलेटर बाहर निकलता है, तब भी यह आपके उपप्रकारों को मार सकता है। यह केवल मेरी जानकारी के लिए हल किया जा सकता है, यह सुनिश्चित करके कि प्रक्रिया शेल की नौकरियों की मेज से हटा दी जाती है। यदि nohupशेल शेल के साथ ओवरराइड किया जाता है, जैसा कि कभी-कभी होता है, तो यह पर्याप्त हो सकता है, हालांकि, इस घटना में कि यह नहीं है ...


disownएक खोल में builtin है bash, zshहै, और ksh93,

<command> &
disown

या

<command> &; disown

अगर आप वन-लाइनर्स पसंद करते हैं। यह आमतौर पर नौकरियों की मेज से उपप्रकार को हटाने का वांछनीय प्रभाव है। यह आपको गलती से बच्चे की प्रक्रिया के संकेत के बिना टर्मिनल एमुलेटर से बाहर निकलने की अनुमति देता है। कोई फर्क नहीं पड़ता कि SIGHUPहैंडलर कैसा दिखता है, यह आपके बच्चे की प्रक्रिया को नहीं मारना चाहिए।

विघटन के बाद, प्रक्रिया अभी भी आपके टर्मिनल एमुलेटर का एक बच्चा है ( pstreeयदि आप इसे कार्रवाई में देखना चाहते हैं तो खेलते हैं), लेकिन टर्मिनल एमुलेटर के बाहर निकलने के बाद, आपको इसे इनिट प्रक्रिया से जुड़ा हुआ देखना चाहिए। दूसरे शब्दों में, सब कुछ वैसा ही है जैसा कि होना चाहिए, और जैसा कि आप चाहते हैं कि यह होना चाहिए।

यदि आपका खोल समर्थन नहीं करता है तो क्या करें disown? मैं दृढ़ता से उस पर स्विच करने की वकालत करता हूँ, लेकिन उस विकल्प के अभाव में, आपके पास कुछ विकल्प हैं।

  1. screenऔर tmuxइस समस्या को हल कर सकते हैं, लेकिन वे बहुत भारी वजन समाधान कर रहे हैं, और मैं उन्हें इस तरह के एक सरल कार्य के लिए चलाने के लिए पसंद नहीं है। वे उन स्थितियों के लिए बहुत अधिक उपयुक्त हैं जिनमें आप आमतौर पर एक दूरस्थ मशीन पर ट्टी बनाए रखना चाहते हैं।
  2. कई उपयोगकर्ताओं के लिए, यह देखना वांछनीय हो सकता है कि क्या आपका शेल zsh जैसी क्षमता का समर्थन करता है setopt nohup। इसका उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि SIGHUPशेल के बाहर निकलने पर नौकरियों की तालिका में नौकरियों को नहीं भेजा जाना चाहिए। आप या तो शेल से बाहर निकलने से पहले इसे लागू कर सकते हैं, या इसे शेल कॉन्फ़िगरेशन में जोड़ सकते हैं जैसे ~/.zshrcकि आप हमेशा इसे चाहते हैं।
  3. नौकरी तालिका को संपादित करने का एक तरीका खोजें। मैं इस में इसके लिए कोई तरीका नहीं पा सके tcshया cshहै, जो कुछ हद तक परेशान है।
  4. कांटा बंद करने के लिए एक छोटा सी कार्यक्रम लिखें और exec()। यह एक बहुत ही खराब समाधान है, लेकिन स्रोत में केवल एक दर्जन लाइनें शामिल होनी चाहिए। आप तब C प्रोग्राम में कमांड लाइन आर्ग्युमेंट के रूप में कमांड पास कर सकते हैं, और इस प्रकार जॉब्स टेबल में एक प्रक्रिया विशिष्ट प्रविष्टि से बच सकते हैं।

29
  1. nohup $COMMAND &
  2. $COMMAND & disown
  3. setsid command

मैं बहुत लंबे समय से नंबर 2 का उपयोग कर रहा हूं, लेकिन नंबर 3 ठीक वैसे ही काम करता है। इसके अलावा, disownका एक nohupझंडा है -h, के साथ सभी प्रक्रियाओं -aको भंग कर सकते हैं, और के साथ सभी चल रही प्रक्रियाओं को भंग कर सकते हैं -ar

सिलिंग द्वारा पूरा किया जाता है $COMMAND &>/dev/null

उम्मीद है की यह मदद करेगा!


छोटा एवं सुन्दर; इस बहुत उपयोगी सारांश के लिए धन्यवाद!
शेलजोन

मुझे विश्वास नहीं हो रहा है कि मुझे अभी भी इस पोस्ट के लिए सूचनाएं मिलेंगी ...
श्री मिन्टी फ्रेश

9

मुझे लगता है कि स्क्रीन आपकी समस्या का समाधान कर सकती है


9

tcsh में (और शायद अन्य गोले में भी), आप प्रक्रिया को अलग करने के लिए कोष्ठक का उपयोग कर सकते हैं।

इसकी तुलना करें:

> jobs # shows nothing
> firefox &
> jobs
[1]  + Running                       firefox

इसके लिए:

> jobs # shows nothing
> (firefox &)
> jobs # still shows nothing
>

यह नौकरियों की सूची से फ़ायरफ़ॉक्स को हटा देता है, लेकिन यह अभी भी टर्मिनल से बंधा हुआ है; यदि आप 'ssh' के माध्यम से इस नोड में लॉग इन करते हैं, तो लॉग आउट करने की कोशिश अभी भी ssh प्रक्रिया को लटकाएगी।


9

बैश के लिए सबसे सरल और एकमात्र सही उत्तर:

command & disown

आपको टर्मिनल से प्रक्रिया को अलग नहीं करना है, लेकिन शेल से।


7

उदाहरण के लिए उप-शेल के माध्यम से ट्टी शेल रन कमांड को अलग करना

(आदेश) और

जब बाहर निकले हुए टर्मिनल को बंद किया जाता है, लेकिन प्रक्रिया अभी भी जीवित है।

चेक -

(sleep 100) & exit

अन्य टर्मिनल खोलें

ps aux | grep sleep

प्रक्रिया अभी भी जीवित है।


मुझे ठीक इसी की आवश्यकता थी। मैं उदात्त पाठ के लिए एक सांत्वना शॉर्टकट जोड़ने का प्रयास कर रहा था और यह पूरी तरह से काम करता है, यहाँ मैंने क्या किया: ("/ Opt / Sublime Text 2 / sublime_text" $ @) &
Ron E

5

जॉब को बैकग्राउंड करना और फोरग्राउंड करना शायद सबसे पहली चीजों में से एक है जिसे हर यूनिक्स एसईएस-एडमिन को जानना चाहिए।

यहाँ यह बाश के साथ कैसे किया जाता है:

./script.sh
# suspend process
{ctrl-Z}
# background process
bg
# list all backgrounded jobs
jobs
# bring it back to foreground
fg

4

आप अपने आदेश को nohup कमांड का उपयोग करके चला सकते हैं, यह आपकी प्रक्रिया को अलग कर देता है और किसी दिए गए फ़ाइल में आउटपुट को पुनर्निर्देशित करता है ... लेकिन मुझे यकीन नहीं है कि वास्तव में आपको क्या चाहिए ..


मैं कसम खा सकता हूं कि मैंने फांसी का इस्तेमाल करने से पहले nohup की कोशिश की थी - लेकिन जाहिरा तौर पर ठीक से नहीं, क्योंकि यह इस तरह से काम करता है: nohup gnome-terminal -e "vim $ @" &> / dev / null &

2

डेमॉन का प्रयास करें - अपने अनुकूल पैकेज मैनेजर से उपलब्ध होना चाहिए और टर्मिनल से खुद को अलग करने के हर तरीके का ध्यान रखना चाहिए।


2

बस इसे अपने bashrc / zshrc में जोड़ें:

detach() {
  "$@" 1>/dev/null 2>/dev/null &; disown
}

तो आप इस तरह से विख्यात कमांड चला सकते हैं:

detach gedit ~/.zshrc

1

मेरे .bashrc में, मेरे पास ये कार्य ठीक उसी उद्देश्य के लिए हैं:

function run_disowned() {
    "$@" & disown
}

function dos() {
    # run_disowned and silenced

    run_disowned "$@" 1>/dev/null 2>/dev/null
}

dosइसे टर्मिनल से अलग करने के लिए एक कमांड को उपसर्ग करें ।

फ़ंक्शन के साथ काम करने के लिए लिखा गया है bashऔर zsh


1
मैं इस बात से थोड़ा उलझन में हूं कि यह उत्तर एक फ़ंक्शन को दूसरे में लिपटा हुआ उपयोग क्यों करता है, जब इसके पर्याप्त इस तरह से शरीर के साथ एक फ़ंक्शन का उपयोग करने के लिए पर्याप्त है ( "$@" & disown) &> /dev/null:। यह भी उपयोग करने के लिए 1>और अधिक समझ में नहीं आता है 2>, क्योंकि आप उपयोग कर रहे हैं disown, जिसका अर्थ है कि आप बैश का उपयोग कर रहे हैं, और बैश में आप आसानी से &>दोनों स्टडआउट और stderr को पुनर्निर्देशित कर सकते हैं
Sergiy Kolodyazhnyy

मेरे पास दो कार्य हैं क्योंकि (1) मुझे लगता है कि इस तरह से पढ़ना आसान है, और (2) मुझे run_disownedअपने डॉटफ़ाइल्स में अन्य स्थानों पर कार्यक्षमता की आवश्यकता है । तुम &>बात के बारे में सही हो , बिल्कुल।
mic_e

0

मैंने मैक ओएस एक्स पर पाया है कि मुझे यह सुनिश्चित करने के लिए दोनों नोह का उपयोग करने की आवश्यकता है और यह सुनिश्चित करने के लिए कि टर्मिनल के साथ बच्चे की प्रक्रिया को फाड़ा नहीं गया है।


0

मैं ऐसा करने के लिए निम्न स्क्रिप्ट का उपयोग करता हूं। यह टर्मिनल के लिए प्रोसेस प्रिंटिंग को रोक देता है nohup, यदि कमांड के भीतर खत्म हो जाता है, तो रिटर्न स्टेटस के साथ अलग हो जाता है TIMEOUT

#!/bin/bash

TIMEOUT=0.1

CMD=( "$@" )
#Could have some shortcuts here, e.g. replace "somefile.c" with "gedit somefile.c"

#use nohup to run the command, suppressing its output and allowing the terminal to be closed
#also send nohup's output to /dev/null, supressing nohup.out
#run nohup in the background so this script doesn't block
#print the command for debugging and to see bash variable expansion
printf "%q " "${CMD[@]}"
echo
nohup "${CMD[@]}" >/dev/null 2>&1 &
NOHUP_PID=$!

#kill this script after a short time, exiting with success status - command is still running
#this is needed as there is no timeout argument for `wait` below
MY_PID=$$
trap "exit 0" SIGINT SIGTERM
sleep $TIMEOUT && kill $MY_PID 2>/dev/null & #ignore "No such process" error if this exits normally

#if the command finishes before the above timeout, everything may be just fine or there could have been an error
wait $NOHUP_PID
NOHUP_STATUS=$?
#print an error if there was any. most commonly, there was a typo in the command
[ $NOHUP_STATUS != 0 ] && echo "Error: $CMD"
#return the exit status of nohup, whatever it was
exit $NOHUP_STATUS

उपयोग उदाहरण:

>>> run false
false
Error: false
>>> echo $?
1
>>> run true
true
>>> run sleep 10
sleep 10
>>>


-1

कई जवाबों में नोह का उपयोग करने का सुझाव दिया गया । मैं इसके बजाय pm2 का उपयोग करने का सुझाव दूंगा । का उपयोग करते हुए PM2 अधिक nohup आवेदन और बहुत अधिक अन्य सुविधाओं के लिए लॉग फ़ाइलों को बनाए रखने के कई फायदे, आवेदन को जीवित रखने की तरह है। अधिक विवरण के लिए इसे देखें

स्थापित करने के लिए PM2 आप डाउनलोड करने की आवश्यकता NPM । डेबियन आधारित प्रणाली के लिए

sudo apt-get install npm

और रेडहैट के लिए

sudo yum install npm

या आप इन निर्देशों का पालन कर सकते हैं । स्थापित करने के बाद NPM स्थापित करने के लिए इसका इस्तेमाल करते हैं PM2

npm install pm2@latest -g

एक बार हो जाने के बाद आप अपना आवेदन शुरू कर सकते हैं

$ pm2 start app.js              # Start, Daemonize and auto-restart application (Node)
$ pm2 start app.py              # Start, Daemonize and auto-restart application (Python)

निम्नलिखित कमांड के उपयोग की प्रक्रिया की निगरानी के लिए:

$ pm2 list                      # List all processes started with PM2
$ pm2 monit                     # Display memory and cpu usage of each app
$ pm2 show [app-name]           # Show all informations about application

ऐप नाम या प्रक्रिया आईडी का उपयोग करके प्रक्रियाओं को प्रबंधित करें या सभी प्रक्रियाओं को एक साथ प्रबंधित करें:

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart  <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>

लॉग फ़ाइलों में पाया जा सकता है

$HOME/.pm2/logs #contain all applications logs

1
यूनिक्स प्रक्रियाओं को नियंत्रित करने के लिए NodeJS एप्लिकेशन (nohup की तरह एक छोटा और मजबूत कमांड) का उपयोग करना लगता है ... वास्तव में ओवरकिल, और ईमानदार होना अजीब है। अगर आप को पुनः आरंभ करने की आवश्यकता है तो मैं monit का उपयोग करूंगा।
सर्जियो

@Sergio यह आपकी पसंद का उपयोग किया हुआ अनुप्रयोग है।
haccks

इस साल (एक 4 दिन पहले) कई रिलीज़ किए गए हैं, इसलिए मैं यह नहीं देखता कि आप कैसे / क्यों सोच सकते हैं कि मोनिट एक पदावनत आवेदन है। @see mmonit.com/monit/changes
सर्जियो

मैं नोहरे के बारे में बात कर रहा था।
17:11 बजे

1
nohupएक सादा मानक POSIX कमांड है, इसलिए एक ही टिप्पणी: कोई भी तरीका यह नहीं निकाला जाता है। @see unix.com/man-page/posix/1p/nohup
सर्जियो

-1

यदि आपका लक्ष्य केवल टर्मिनल विंडो को चारों ओर रखे बिना कमांड लाइन एप्लिकेशन लॉन्च करना है, तो आप टर्मिनल को ऑल-एफ 2 के साथ लॉन्च करने के बाद एप्लिकेशन चलाने का प्रयास कर सकते हैं।

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