如何从命令行启动/停止/重新启动启动的服务?

如何从命令行启动/停止/重新启动启动的服务?

我如何重新启动,比如我的 httpd 或 afpd,运行任何 Mac OS X >= 10.5 (Leopard-),而无需使用 GUI 并转到系统偏好设置 -> 共享并取消选中/选中“Web 共享”?

我正在寻找与 Debian 的规范等效的invoke-rc.d apache2 restart

编辑:问题是关于一般情况下 launchd 会控制服务,不是专门针对 Apache(- 这只是一个例子)。

答案1

launchctl(8) 是你的好朋友。请记住,配置文件中禁用了一些服务(例如 sshd),因此加载它们时需要使用开关-w。以下是一个例子 - sshd

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

您可以使用unload子命令停止该服务。

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

要列出服务,您可能已经猜到了,请使用“list”子命令;)

答案2

要重新启动服务,可以使用该launchctl kickstart命令以及-k选项。例如,要重新启动 Apache,可以使用

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.
          [...]

答案3

你可以简单地做

sudo launchctl stop com.openssh.sshd

如果你不知道完整的服务名称,你可以这样做

sudo launchctl list

如果仍然找不到预期的服务,请尝试以非 root 身份运行:

launchctl list

而且您不需要卸载和加载服务。

答案4

您正在寻找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.

相关内容