我正在寻找与Debian
invoke-rc.d apache2 restart
等效的规范。EDIT:问题是关于一般启动的受控服务,而不是关于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'子命令;)
很有趣,
n
评论
此外,launchctl list不会抱怨但不会显示所有内容,因此需要sudo launchctl list。
– conny
2010-10-26 16:16
不是它没有显示所有内容,而是显示了完全不同的列表。当您以普通用户身份运行launchctl时,它将显示/管理在用户会话中运行的LaunchAgent。以root身份运行,它显示/管理系统范围的LaunchDaemons。
–戈登·戴维森(Gordon Davisson)
10-10-26在16:32
我可以在该列表中看到“ com.openssh.sshd”,因此我猜该配置已“加载”。现在,例如sudo launchctl start com.openssh.sshd为何不执行任何操作,不会因错误消息而失败,甚至更不实际执行任何操作?
– conny
10-10-26在16:39
@conny在一般情况下可能会造成混淆,但是,当您编写服务时,例如怀疑启动时发生了令人讨厌的事情,您可以加载一次,然后使用“停止” /“启动”来调试问题。
–内登
10-10-28在21:08
为什么不提及launchctl start
#2 楼
要重新启动服务,可以将launchctl kickstart
命令与-k
选项一起使用。例如,要重新启动apache,可以使用sudo launchctl kickstart -k system/org.apache.httpd
此信息来自
launchctl
手册页: br /> 评论
当我尝试将此服务挂起时,它在短暂的等待后没有停止,对pid的“ kill”没有帮助,对pid进行的“ kill -9”杀死了该进程,并让kickstart(该命令在另一个环境中运行)控制台,但我尝试终止该进程)继续并再次启动该服务。我没有等很久才开始手动杀死事物,因此等待足够长的时间可能足以解决问题。
–塞缪尔·阿斯伦(SamuelÅslund)
19年6月28日在12:06
#3 楼
您可以简单地执行sudo launchctl stop com.openssh.sshd
如果您不知道完整的服务名称,则可以执行
sudo launchctl list
如果仍然找不到所需的服务,请尝试在没有根身份的情况下运行:
launchctl list
并且不需要卸载和加载服务。
评论
我尝试了此操作,现在无法在Mac中使用ssh。重新启动无法修复。用start代替stop也不能解决。
– P i
17年5月25日在8:38
我尝试了此操作,但仍然可以在Mac上使用ssh!
–迈克尔
17-10-1在21:57
@ dmitriy-apollonin无效,您必须使用sudo卸载/System/Library/LaunchDaemons/ssh.plist。
–SebMa
18年8月7日在9:21
问题是有关重新启动服务,但我认为launchctl stop不会重新启动服务。
– jochen
19年1月3日,13:50
#4 楼
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist#5 楼
您正在寻找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.
评论
但是阅读手册页并没有告诉我相当于invoke-rc.d my-little-daemon restart是什么……它指的是“ job_label”,但没有告诉我如何列出可用的“ job_label” 。
– conny
2010-10-26 13:51
我认为奈登的回应已经涵盖了这一点。
–eric.s
2010-10-28 13:29
#6 楼
以防万一,如果您正在寻找launchctl reload
,可以像我一样在~/.bashrc/.zshrc
中定义shell函数:function lctl {
COMMAND=
PLIST_FILE=
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
}
命令执行类似于->
lctl reload <your-plist-name>.plist
#7 楼
sudo apachectl restart
与其他OS一起使用,并且它是Apache的一部分。
评论
即使该主题没有特别提到apache,我也应该预料到这种解释...。很抱歉,但这不是我想要的:)
– conny
2010-10-26 13:20
好的,我抓住了httpd部分,对于它来说,使用apachectl是更简单的变体:)
– Sven
2010-10-26 14:30
#8 楼
有一个名为Lingon的小型实用程序。Lingon免费软件在这里
有时重新启动服务可能很棘手。
syslog -w
虽然阅读有所帮助。
评论
从到目前为止的答案来看,假设没有单个launchctl命令重新启动服务是正确的吗?@JS。根据手册页,kickstart和-k选项似乎可以解决问题。请在下面查看我的答案...