Question Comment démarrer / arrêter / redémarrer les services launchd à partir de la ligne de commande?


Comment redémarrer, par exemple, httpd ou afpd, sous Mac OS X> = 10.5 (Leopard-), sans avoir à utiliser l'interface graphique et à accéder à Préférences Système -> Partage et décocher / cocher "Partage Web"?

Je cherche l'équivalent canonique de Debian invoke-rc.d apache2 restart.

EDIT: La question est à propos de lancement de services contrôlés en général, pas spécifiquement Apache (-ce qui était simplement un exemple).


128
2017-10-26 12:21


origine


D'après les réponses reçues jusqu'à présent, il est correct de supposer qu'il n'y a pas de commande launchctl à redémarrer un service? - JS.


Réponses:


Salut launchctl (8) est votre ami. Gardez simplement à l’esprit que certains des services (sshd par exemple) sont désactivés dans le fichier de configuration. Vous devrez donc utiliser le -w basculer lors du chargement. Voici un exemple sshd:

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

Vous pouvez arrêter le service en utilisant le unload sous-commande.

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

Comme vous l'avez peut-être déjà deviné, utilisez la sous-commande 'list' pour lister les services;)

s'amuser, n


143
2017-10-26 14:00



En outre, launchctl list ne se plaint pas mais ne montre pas tout, sudo launchctl list est nécessaire pour cela. - conny
Ce n'est pas qu'il ne montre pas tout, il montre une liste complètement différente. Quand tu cours launchctl en tant qu'utilisateur normal, il affiche / gère les LaunchAgents en cours d'exécution dans votre session utilisateur; exécuté en tant que root, il affiche / gère les LaunchDaemons à l’échelle du système. - Gordon Davisson
Je peux voir "com.openssh.sshd" dans cette liste, donc je suppose que config est "chargé". Maintenant, comment par exemple sudo launchctl start com.openssh.sshd ne fait pas n'importe quoi, pas evan échouer avec un message d'erreur, encore moins vraiment réellement lancer quelque chose? - conny
@conny Cela peut être déroutant dans le cas général, cependant, lorsque vous écrivez un service et que vous soupçonnez par exemple que quelque chose de méchant se produit au démarrage, vous pouvez le charger une fois et utiliser 'stop' / 'start' pour résoudre le problème. . - nayden
Pourquoi aucune mention de launchctl start <label> ou launchctl stop <label>? Si cela a déjà été lancé par launchctl, il n'est pas nécessaire de recharger le fichier plist (à moins que cela ne change aussi?). C'est embêtant il n'y a pas restart ou reload commander. Quelqu'un connaît-il une méthode à commande unique pour effectuer (par exemple) Mongod un changement de fichier de configuration? Je ne suis tout simplement pas satisfait ... stop ... && ... start .... - Brian


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


7
2017-10-26 14:20





Tu recherches 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



Mais la lecture de la page de manuel ne me dit pas ce que l’équivalent de invoke-rc.d my-little-daemon restart is ... Il fait référence à "job_label" mais ne me dit pas comment répertorier les "job_label" disponibles. - conny
Je pense que la réponse de Nayden a couvert cela. - eric.s


Vous pourriez simplement faire

sudo launchctl stop com.openssh.sshd

Si vous ne connaissez pas le nom complet du service, vous pouvez le faire.

sudo launchctl list

Si vous ne trouvez toujours pas le service attendu, essayez de l'exécuter sans l'identité racine:

launchctl list

Et vous n'avez pas besoin de décharger et de charger le service.


2
2017-12-26 13:05



J'ai essayé cela et maintenant je ne peux plus utiliser ssh de mon Mac. Le redémarrage ne répare pas. Remplacement stop avec start aussi ne répare pas. - P i
J'ai essayé cela et je peux toujours ssh sur mon Mac! - Michael
@ dmitriy-apollonin Cela ne fonctionne pas, vous devez utiliser sudo unload /System/Library/LaunchDaemons/ssh.plist au lieu. - SebMa


sudo apachectl restart

Fonctionne avec d'autres OSses et fait partie d'Apache.


1
2017-10-26 12:27



Même si le sujet ne parle pas d'apache en particulier, j'aurais dû anticiper cette interprétation ... Je m'excuse, mais ce n'est pas ce que je cherchais :) - conny
Ok, j’ai attrapé la partie httpd, pour laquelle utiliser apachectl est la variante la plus simple :) - Sven♦


Juste au cas où si vous recherchez launchctl reload, vous pouvez définir la fonction shell dans votre ~/.bashrc/.zshrc comme je l'ai fait:

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
}

L'exécution de la commande ressemble à -> lctl reload <your-plist-name>.plist


1
2017-10-12 09:21





Il existe une petite application utile pour ce Lingon nommé. L'édition gratuite de Lingon est arrivée  parfois, le redémarrage d'un service peut être délicat.

syslog -w

La lecture aide cependant.


0
2018-03-08 13:34





Je ne sais pas si c'est ce que vous cherchez, mais vous pouvez essayer top une commande simple que je trouve assez utile.


0
2018-04-18 19:11



mais cela ne montre que les processus en cours d'exécution et je ne pense pas que vous pouvez démarrer / arrêter / redémarrer tout - user411190
Cela vous permettrait d’arrêter les processus, mais pas trop. - chicks