![如何从命令行启动/停止/重新启动启动的服务?](https://linux22.com/image/528301/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%90%AF%E5%8A%A8%2F%E5%81%9C%E6%AD%A2%2F%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%90%AF%E5%8A%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我如何重新启动,比如我的 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.