سؤال كيفية بدء / إيقاف / إعادة تشغيل الخدمات launchd من سطر الأوامر؟


كيف يمكنني إعادة تشغيل ، على سبيل المثال httpd أو afpd ، تشغيل أي نظام تشغيل Mac OS X> = 10.5 (Leopard-) ، دون الحاجة إلى استخدام واجهة المستخدم الرسومية والانتقال إلى تفضيلات النظام -> المشاركة وإلغاء التحقق / التحقق من "مشاركة الويب"؟

أنا أبحث عن المعادل الكنسي لـ Debian invoke-rc.d apache2 restart.

تحرير: السؤال حول خدمات controld بشكل عام، وليس على وجه التحديد أباتشي (التي كانت مجرد مثال).


128
2017-10-26 12:21


الأصل


من الإجابات حتى الآن ، من الصحيح افتراض أنه لا يوجد أمر إطلاق واحد إعادة بدء خدمة؟ - JS.


الأجوبة:


Hi launchctl (8) هو صديقك. فقط ضع في اعتبارك أن بعض الخدمات (على سبيل المثال sshd) معطلة في ملف التكوين لذا ستحتاج إلى استخدام -w التبديل عند تحميلها. في ما يلي مثال sshd:

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

يمكنك إيقاف الخدمة باستخدام unload subcommand.

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

لسرد الخدمات ، كما قد تكون قد خمنت بالفعل استخدم الأمر الفرعي "قائمة" ؛)

إستمتع، ن


143
2017-10-26 14:00



بالاضافة، launchctl list لا يشكو لكنه لا يظهر كل شيء ، sudo launchctl list هناك حاجة لذلك. - conny
الأمر لا يعني أنه لا يظهر كل شيء ، بل إنه يعرض قائمة مختلفة تمامًا. عندما تقوم بتشغيل launchctl كمستخدم عادي ، فإنه يعرض / يدير LaunchAgents يعمل في جلسة المستخدم الخاصة بك ؛ تشغيل كجذر ، فإنه يظهر / يدير LaunchDaemons على مستوى النظام. - Gordon Davisson
أستطيع أن أرى "com.openssh.sshd" في هذه القائمة ، لذلك أعتقد أن "تحميل" التكوين. الآن ، فكيف على سبيل المثال sudo launchctl start com.openssh.sshd لا تفعل اى شى، لا ايفان تفشل مع رسالة خطأ ، حتى أقل من ذلك إطلاق أي شيء في الواقع؟ - conny
conny قد يكون الأمر مُربكًا في الحالة العامة ، ولكن عندما تكتب خدمة وتشك على سبيل المثال في أن شيئًا سيئًا يحدث عند بدء التشغيل ، يمكنك تحميله مرة واحدة واستخدام "stop" / "start" لتصحيح المشكلة . - nayden
لماذا لا تذكر launchctl start <label> أو launchctl stop <label>؟ إذا كان قد تم بدء تشغيله بالفعل بواسطة launchctl ، فلا حاجة إلى إعادة تحميل ملف plist (ما لم يتغير أيضًا؟). من المزعج أنه لا يوجد restart أو reload أمر. أي شخص يعرف طريقة واحدة للقيادة صنع (على سبيل المثال) mongod تلتقط تغيير ملف التكوين؟ أنا فقط غير راضٍ ... stop ... && ... start .... - Brian


sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist


7
2017-10-26 14:20





أنت تبحث عن 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
2017-10-26 13:27



لكن قراءة صفحة الرجل لا تخبرني ما يعادل أي منهما invoke-rc.d my-little-daemon restart هو ... يشير إلى "job_label" لكنه لا يخبرني كيف نضع قائمة "job_label" المتاحة. - conny
أعتقد أن استجابة نايدين قد حصلت على ذلك. - eric.s


يمكنك ببساطة القيام به

sudo launchctl stop com.openssh.sshd

إذا كنت لا تعرف اسم الخدمة الكامل ، فيمكنك القيام بذلك

sudo launchctl list

إذا لم تعثر على الخدمة التي تتوقعها ، فحاول تشغيلها بدون هوية الجذر:

launchctl list

ولا تحتاج إلى إلغاء تحميل الخدمة.


2
2017-12-26 13:05



جربت هذا ولا أستطيع الآن استخدامه ssh من جهاز Mac. إعادة التشغيل لا تصلح. استبدال stop مع start كما لا يصلح. - P i
لقد جربت هذا وما زلت أستطيع ssh إلى جهاز Mac الخاص بي! - Michael
@ dmitriy-apollonin لا يعمل ، يجب عليك استخدام sudo unload /System/Library/LaunchDaemons/ssh.plist في حين أن. - SebMa


sudo apachectl restart

يعمل مع أنظمة تشغيل أخرى بالإضافة إلى أنه جزء من Apache.


1
2017-10-26 12:27



على الرغم من أن الموضوع لا يذكر أباتشي على وجه الخصوص ، كان ينبغي أن أتوقع هذا التفسير .... أنا آسف ، ولكن هذا لم يكن ما كنت أبحث عنه :) - conny
حسنا ، أنا التقطت جزء httpD ، والتي تستخدم apachectl هو البديل أسهل :) - Sven♦


فقط في حالة إذا كنت تبحث عنه launchctl reloadيمكنك تعريف الدالة shell في ~/.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
2017-10-12 09:21





هناك تطبيق صغير ومفيد لهذا Lingon المسمى. طبعة مجانية لينجون هو هنا  في بعض الأحيان يمكن إعادة تشغيل الخدمة أن تكون خادعة.

syslog -w

القراءة يساعد على الرغم من.


0
2018-03-08 13:34