Pertanyaan Bagaimana cara memulai / menghentikan / me-restart layanan launchd dari baris perintah?


Bagaimana cara memulai ulang, katakanlah misalnya httpd atau afpd saya, menjalankan Mac OS X> = 10.5 (Leopard-), tanpa harus menggunakan GUI dan pergi ke System Preferences -> Sharing dan unchecking / checking "Web Sharing"?

Saya mencari persamaan kanonik dengan Debian invoke-rc.d apache2 restart.

EDIT: Pertanyaannya adalah tentang layanan terkontrol launchd secara umum, tidak khusus Apache (-yang hanya sebuah contoh).


128
2017-10-26 12:21




Dari jawaban sejauh ini, sudah benar untuk menganggap tidak ada perintah launchctl tunggal untuk mengulang kembali sebuah layanan? - JS.


Jawaban:


Hi launchctl (8) adalah temanmu. Hanya perlu diingat bahwa beberapa layanan (sshd misalnya) dinonaktifkan dalam file konfigurasi sehingga Anda perlu menggunakan -w beralih saat memuatnya. Berikut ini contoh sshd:

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

Anda dapat menghentikan layanan menggunakan unload perintah bawah.

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

Untuk daftar layanan, karena Anda mungkin sudah menebak menggunakan 'daftar' subcommand;)

Selamat bersenang-senang, n


143
2017-10-26 14:00



Sebagai tambahan, launchctl list tidak mengeluh tetapi tidak menunjukkan segalanya, sudo launchctl list diperlukan untuk itu. - conny
Bukannya itu tidak menunjukkan segalanya, itu menunjukkan daftar yang sama sekali berbeda. Saat Anda berlari launchctl sebagai pengguna biasa, ini menunjukkan / mengatur LaunchAgents yang berjalan di sesi pengguna Anda; dijalankan sebagai root, ini menunjukkan / mengelola LaunchDaemon sistem-lebar. - Gordon Davisson
Saya bisa melihat "com.openssh.sshd" di daftar itu, jadi saya kira konfigurasi itu "dimuat". Sekarang, bagaimana misalnya sudo launchctl start com.openssh.sshd tidak apa pun, bukankah evan gagal dengan pesan kesalahan, apalagi jadi benar-benar meluncurkan sesuatu? - conny
@conny Ini mungkin membingungkan dalam kasus umum, namun ketika Anda menulis layanan dan Anda mencurigai misalnya bahwa sesuatu yang buruk terjadi saat startup, Anda dapat memuatnya sekali dan penggunaan 'stop' / 'start' untuk melakukan debug pada masalah . - nayden
Mengapa tidak disebutkan launchctl start <label> atau launchctl stop <label>? Jika sudah dimulai oleh launchctl tidak perlu memuat ulang file plist (kecuali itu berubah juga?). Itu menjengkelkan tidak ada restart atau reload perintah. Ada yang tahu cara membuat perintah tunggal (misalnya) mongod mengambil perubahan file konfigurasi? Aku hanya tidak puas ... stop ... && ... start .... - Brian


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


7
2017-10-26 14:20





Anda sedang mencari 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



Tetapi membaca man-page tidak memberi tahu saya apa yang setara dengan keduanya invoke-rc.d my-little-daemon restart adalah ... Ini mengacu pada "job_label" tetapi tidak memberi tahu saya bagaimana mencantumkan "job_label" yang tersedia. - conny
Saya pikir respon nayden telah mendapatkan ini tertutup. - eric.s


Anda hanya bisa melakukannya

sudo launchctl stop com.openssh.sshd

Jika Anda tidak tahu nama layanan lengkap, Anda bisa melakukannya

sudo launchctl list

Jika Anda masih tidak menemukan layanan yang Anda harapkan, coba jalankan tanpa identitas root:

launchctl list

Dan Anda tidak perlu membongkar dan memuat layanan.


2
2017-12-26 13:05



Saya mencoba ini dan sekarang saya tidak bisa menggunakannya ssh dari Mac saya. Boot ulang tidak diperbaiki. Mengganti stop dengan start juga tidak diperbaiki. - P i
Saya mencoba ini dan saya masih bisa ssh ke Mac saya! - Michael
@ dmitriy-apollonin Tidak berfungsi, Anda harus menggunakannya sudo unload /System/Library/LaunchDaemons/ssh.plist sebagai gantinya. - SebMa


sudo apachectl restart

Bekerja dengan OS lain serta merupakan bagian dari Apache.


1
2017-10-26 12:27



Meskipun topik tidak menyebutkan apache secara khusus, saya seharusnya mengantisipasi interpretasi ini .... Maaf, tapi bukan itu yang saya cari :) - conny
Ok, saya menangkap bagian httpd, yang menggunakan apachectl adalah varian yang lebih mudah :) - Sven♦


Untuk jaga-jaga jika Anda mencari launchctl reload, Anda dapat menentukan fungsi shell di komputer Anda ~/.bashrc/.zshrc seperti yang saya lakukan:

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
}

Eksekusi perintah terlihat seperti -> lctl reload <your-plist-name>.plist


1
2017-10-12 09:21





Ada aplikasi kecil & berguna untuk ini bernama Lingon. Edisi freeware Lingon ada di sini  terkadang memulai kembali layanan dapat menjadi hal yang rumit.

syslog -w

namun membaca membantu.


0
2018-03-08 13:34





saya tidak tahu apakah ini yang Anda cari tetapi Anda bisa mencoba top perintah sederhana yang menurut saya cukup berguna.


0
2018-04-18 19:11



tetapi ini hanya menampilkan proses yang berjalan dan saya tidak berpikir Anda dapat memulai / menghentikan / memulai kembali - user411190
Itu akan membiarkan Anda menghentikan proses, tetapi memulai tidak terlalu banyak. - chicks