如何重新启动(例如说我的httpd或afpd),运行任何Mac OS X> = 10.5(Leopard-),而不必使用GUI并转到“ 系统偏好设置”-> “共享”,然后取消选中/选中“ Web共享”?
我正在寻找与Debian的规范相等的规范invoke-rc.d apache2 restart
。
编辑:问题是关于一般启动的受控服务,而不是专门针对Apache(这只是一个示例)。
kickstart
使用共同-k
的选择似乎这样的伎俩。请参阅下面的答案...
如何重新启动(例如说我的httpd或afpd),运行任何Mac OS X> = 10.5(Leopard-),而不必使用GUI并转到“ 系统偏好设置”-> “共享”,然后取消选中/选中“ Web共享”?
我正在寻找与Debian的规范相等的规范invoke-rc.d apache2 restart
。
编辑:问题是关于一般启动的受控服务,而不是专门针对Apache(这只是一个示例)。
kickstart
使用共同-k
的选择似乎这样的伎俩。请参阅下面的答案...
Answers:
嗨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
。
launchctl
以普通用户身份运行时,它将显示/管理在用户会话中运行的LaunchAgent。以root身份运行,它显示/管理系统范围的LaunchDaemons。
sudo launchctl start com.openssh.sshd
,为什么什么都不做,没有evan失败并显示错误消息,甚至更少实际启动任何事情?
launchctl start <label>
或launchctl stop <label>
?如果已经由launchctl启动,则无需重新加载plist文件(除非也进行了更改?)。这是恼人的,没有restart
或reload
命令。有谁知道使用单命令方式(例如)让mongod更改配置文件?我只是不满意... stop ... && ... start ...
。
sudo launchctl加载-w /System/Library/LaunchDaemons/org.apache.httpd.plist
要重新启动服务,可以将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. [...]
你可以做
sudo launchctl stop com.openssh.sshd
如果您不知道完整的服务名称,则可以
sudo launchctl list
如果仍然找不到所需的服务,请尝试在没有根身份的情况下运行:
launchctl list
而且您不需要卸载和加载服务。
ssh
在Mac上使用。重新启动无法修复。更换stop
用start
也没有解决。
sudo unload /System/Library/LaunchDaemons/ssh.plist
改用。
launchctl stop
不会重新启动服务。
您正在寻找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”。
以防万一,如果您正在寻找launchctl reload
,可以~/.bashrc/.zshrc
像我一样在您的程序中定义shell函数:
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
}
命令执行看起来像-> lctl reload <your-plist-name>.plist