कमांड लाइन से लॉन्च सेवाओं को कैसे शुरू / बंद / पुनरारंभ करें?


149

जीयूआई का उपयोग किए बिना और सिस्टम वरीयताएँ - " साझा करना और अनचेक करना" / "वेब शेयरिंग" की जाँच करने के लिए, बिना किसी मैक ओएस एक्स> = 10.5 (लेपर्ड-) को चलाने के लिए मैं अपने httpd या afpd उदाहरण के लिए कैसे पुनः आरंभ करूं ?

मैं डेबियन के बराबर विहित के लिए देख रहा हूँ invoke-rc.d apache2 restart

संपादित करें: सवाल सामान्य रूप से लॉन्च किए गए नियंत्रित सेवाओं के बारे में है , विशेष रूप से अपाचे (जो केवल एक उदाहरण था) के बारे में नहीं है।


1
अब तक के उत्तरों से, यह मान लेना सही है कि किसी सेवा को पुनः आरंभ करने के लिए कोई एकल लॉंचल कमांड नहीं है?
जेएस।

@JS। मैनुअल पेज के अनुसार, विकल्प के kickstartसाथ मिलकर -kचाल करने के लिए लगता है। मेरा जवाब नीचे देखें ...
16

जवाबों:


158

हाय लॉन्चरल (8) आपका दोस्त है। बस ध्यान रखें कि कुछ सेवाओं (उदाहरण के लिए sshd) कॉन्फ़िगरेशन फ़ाइल में अक्षम हैं, इसलिए आपको -wउन्हें लोड करने के बाद स्विच का उपयोग करने की आवश्यकता होगी । यहाँ एक sshd उदाहरण दिया गया है:

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

आप unloadsubcommand का उपयोग करके सेवा को रोक सकते हैं ।

$ sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist 

सेवाओं को सूचीबद्ध करने के लिए, जैसा कि आप पहले ही अनुमान लगा सकते हैं कि 'सूची' का उपयोग करें;

मज़े करो


9
इसके अलावा, launchctl listशिकायत नहीं करता है लेकिन सब कुछ नहीं दिखाता है, उसके sudo launchctl listलिए आवश्यक है।
conny

9
ऐसा नहीं है कि यह सब कुछ नहीं दिखाता है, यह पूरी तरह से अलग सूची दिखाता है। जब आप launchctlएक सामान्य उपयोगकर्ता के रूप में दौड़ते हैं , तो यह आपके उपयोगकर्ता सत्र में चल रहे LaunchAgents को दिखाता / प्रबंधित करता है; रूट के रूप में चलाया जाता है, यह सिस्टम-वाइड लॉन्चडैमन्स को दिखाता / प्रबंधित करता है।
गॉर्डन डेविसन

1
मैं उस सूची में "com.openssh.sshd" देख सकता हूं, इसलिए मुझे लगता है कि कॉन्फ़िगरेशन "लोड" है। अब, उदाहरण के लिए कैसे आया कुछ भीsudo launchctl start com.openssh.sshd नहीं करता है , एक त्रुटि संदेश के साथ ईवाण विफल नहीं होता है, यहां तक ​​कि कम वास्तव में कुछ भी लॉन्च करता है?
conny

2
@conny यह सामान्य मामले में भ्रामक हो सकता है, हालाँकि जब आप एक सेवा लिख ​​रहे होते हैं और आपको उदाहरण के लिए संदेह होता है कि स्टार्टअप पर कुछ बुरा हो रहा है, तो आप इसे एक बार लोड कर सकते हैं और समस्या को डीबग करने के लिए 'stop' / 'start' का उपयोग कर सकते हैं ।
नादेन

6
क्यों का कोई जिक्र नहीं launchctl start <label>या launchctl stop <label>? यदि यह पहले से ही लॉंच के द्वारा शुरू हो गया है, तो प्लास्ट फाइल को फिर से लोड करने की कोई आवश्यकता नहीं है (जब तक कि यह बदल न जाए?)। यह कष्टप्रद है कोई आदेश restartया reloadआदेश नहीं है। किसी को भी (उदाहरण के लिए) mongod बनाने का एक एकल-कमांड तरीका पता है, जो एक कॉन्फिगर फाइल में बदलाव करता है? मैं सिर्फ इससे संतुष्ट नहीं हूं ... stop ... && ... start ...
ब्रायन

7

सुडोकू लॉंचल लोड -w /System/Library/LaunchDaemons/org.apache.httpd.plist


4

किसी सेवा को पुनरारंभ करने के लिए, आप विकल्प के launchctl kickstartसाथ मिलकर कमांड का उपयोग कर सकते हैं -k। उदाहरण के लिए, अपाचे को पुनरारंभ करने के लिए, आप उपयोग कर सकते हैं

sudo launchctl kickstart -k system/org.apache.httpd

यह जानकारी launchctlमैनुअल पेज से है:

 kickstart [-kp] service-target
          Instructs launchd to run the specified service immediately, regardless of its
          configured launch conditions.

          -k       If the service is already running, kill the running instance before
                   restarting the service.
          [...]

1
जब मैंने यह कोशिश की कि मेरी सेवा को लटका दिया गया था, तो यह थोड़े इंतजार के बाद भी नहीं रुका, पिड पर "मार" से कोई फायदा नहीं हुआ, पिड पर "किल -9" करने से इस प्रक्रिया को मार दिया गया और किकस्टार्ट कर दिया (जो दूसरे में चल रहा था) कंसोल जब मैंने प्रक्रिया को मारने की कोशिश की) जारी है और फिर से सेवा शुरू करें। मैंने चीजों को मैन्युअल रूप से मारना शुरू करने से पहले बहुत लंबे समय तक इंतजार नहीं किया था, इसलिए समस्या को हल करने के लिए लंबे समय तक इंतजार करना पर्याप्त हो सकता है।
सैमुअल Samslund

3

आप बस कर सकते हैं

sudo launchctl stop com.openssh.sshd

यदि आपको पूर्ण सेवा नाम ज्ञात नहीं है, तो आप कर सकते हैं

sudo launchctl list

यदि आपको अभी भी आपकी अपेक्षित सेवा नहीं मिली है, तो मूल पहचान के बिना चलने का प्रयास करें:

launchctl list

और आपको सेवा को अनलोड और लोड करने की आवश्यकता नहीं है।


1
मैंने यह कोशिश की और अब मैं sshअपने मैक से उपयोग नहीं कर सकता । रिबूट करना ठीक नहीं है। के stopसाथ बदलने से startभी ठीक नहीं होता है।
P i

1
मैंने यह कोशिश की और मैं अभी भी अपने मैक के लिए ssh कर सकता हूं!
माइकल

@ dmitriy-apollonin यह काम नहीं करता है, आपको sudo unload /System/Library/LaunchDaemons/ssh.plistइसके बजाय उपयोग करना चाहिए ।
सेबमा

सवाल एक सेवा को फिर से शुरू करने के बारे में है, लेकिन मुझे नहीं लगता कि launchctl stopयह सेवा को पुनरारंभ करता है।
जोचेन

2

आप ढूंढ रहे हैं launchctl

SYNOPSIS
 launchctl [subcommand [arguments ...]]

DESCRIPTION
 launchctl interfaces with launchd to load, unload daemons/agents and gen-
 erally control launchd.  launchctl supports taking subcommands on the
 command line, interactively or even redirected from standard input.
 These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf
 to be read at the time launchd starts.

2
लेकिन मैन-पेज को पढ़ना मुझे यह नहीं बताता है कि दोनों में से क्या समान invoke-rc.d my-little-daemon restartहै ... यह "job_label" को संदर्भित करता है, लेकिन मुझे यह नहीं बताता है कि उपलब्ध "job_label" को कैसे सूचीबद्ध किया जाए।
शंकु

मुझे लगता है कि नैडन की प्रतिक्रिया को यह कवर मिला है।
eric.s

2

यदि आप देख रहे हैं तो बस launchctl reload, आप अपने किए अनुसार शेल फ़ंक्शन को परिभाषित कर सकते हैं ~/.bashrc/.zshrc:

function lctl {
    COMMAND=$1
    PLIST_FILE=$2
    if [ "$COMMAND" = "reload" ] && [ -n "$PLIST_FILE" ]
      then
        echo "reloading ${PLIST_FILE}.."
        launchctl unload ${PLIST_FILE}
        launchctl load ${PLIST_FILE}
      else
        echo "either command not specified or plist file is not defined"
    fi
}

कमांड निष्पादन जैसा दिखता है -> lctl reload <your-plist-name>.plist


1
sudo apachectl restart

अन्य ओएस के साथ काम करता है और साथ ही यह अपाचे का हिस्सा है।


1
भले ही विषय विशेष रूप से अपाचे का उल्लेख नहीं करता है, मुझे इस व्याख्या का अनुमान लगाना चाहिए था .... मुझे क्षमा करें, लेकिन वह नहीं था जिसकी मुझे तलाश थी :)
cony

ठीक है, मैं httpd हिस्सा है, जिसके लिए apachectl का उपयोग कर आसान संस्करण :) है catched
स्वेन

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