Como iniciar / parar / reiniciar serviços launchd a partir da linha de comando?

129

Como reinicio, digamos, por exemplo, meu httpd ou afpd, executando qualquer Mac OS X > = 10.5 (Leopard-) sem precisar usar a GUI e vá para Preferências do sistema - > Compartilhando e desmarcando / verificando "Web Sharing"?

Estou procurando o equivalente canônico para o invoke-rc.d apache2 restart do Debian.

EDIT: A questão é sobre serviços controlados launchd em geral , não especificamente o Apache (-que era simplesmente um exemplo).

    
por conny 26.10.2010 / 14:21

8 respostas

144

Oi launchctl (8) é seu amigo. Apenas tenha em mente que alguns dos serviços (sshd por exemplo) estão desabilitados no arquivo de configuração, então você precisará usar a opção -w ao carregá-los. Aqui está um exemplo de sshd:

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

Você pode parar o serviço usando o subcomando unload .

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

Para listar os serviços, como você já deve ter imaginado, use o subcomando 'list';)

divirta-se n

    
por 26.10.2010 / 16:00
7

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

    
por 26.10.2010 / 16:20
2

Você está procurando por 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.
    
por 26.10.2010 / 15:27
2

Você poderia simplesmente fazer

sudo launchctl stop com.openssh.sshd

Se você não souber o nome completo do serviço, poderá fazer

sudo launchctl list

Se você ainda não encontrar o serviço esperado, tente executar sem a identidade raiz:

launchctl list

E você não precisa descarregar e carregar o serviço.

    
por 26.12.2016 / 14:05
1
sudo apachectl restart

Funciona com outros SOs, assim como faz parte do Apache.

    
por 26.10.2010 / 14:27
1

Apenas no caso, se você estiver procurando por launchctl reload , você pode definir a função de shell no seu ~/.bashrc/.zshrc como eu fiz:

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
}

A execução do comando parece - > lctl reload <your-plist-name>.plist

    
por 12.10.2018 / 11:21
0

Existe um pequeno & aplicativo útil para este chamado Lingon. A edição gratuita do Lingon está aqui às vezes, reiniciar um serviço pode ser complicado.

syslog -w

ler ajuda embora.

    
por 08.03.2014 / 14:34
0

eu não sei é isso que você está procurando, mas você pode tentar top um comando simples que eu acho bastante útil.

    
por 18.04.2017 / 21:11