2

每当我想通过键入以下内容来停止在我的 RaspBMC 中运行的 mpd 服务器时:

service mpd stop

控制台显示典型[ ok ]消息:

[ ok ] Stopping Music Player Daemon: mpd.

但服务并没有真正停止(进程继续运行)。我在服务脚本中进行了深入搜索,找到了对 start-stop-daemon 的调用:

start-stop-daemon --stop --quiet --oknodo --retry 5 --pidfile ~/.mpd/pid --exec /usr/bin/mpd

如果我在控制台中执行此命令(没有--quiet选项),我会收到以下消息:

No /usr/bin/mpd found running; none killed.

但是这个过程确实在运行。我已经检查了 pid 文件和 exec 文件(/usr/bin/mpd),它们是正确的。我注意到当以超级用户身份(使用 sudo)运行命令时,这个错误消失了,所以这似乎是一个权限问题,但我真的不明白为什么/etc/init.d/mpd脚本无法检测到正在运行的进程......它总是被调用使用 sudo,所以它不应该有权限问题,不是吗?

这个配置有什么问题?我应该更改什么以使用 service 命令正确停止服务?

4

2 回答 2

3

我终于找到了!问题是 mpd.conf 中为 pid 文件指定的路径是

pid_file "~/.mpd/pid"

service从命令中停止它时,这似乎无法正常工作。目前我将其更改为

pid_file "/home/MyUserName/.mpd/pid"

并且工作正常,但我会尽快将它移到/var/run/mpd/它似乎是正确的地方。

于 2014-01-09T17:22:58.500 回答
0

是的,这可能是权限问题。

  1. 如果您只想终止服务,请尝试,

    “pidof mpd”或“ps aux | grep mpd”

    “须藤杀 -SIGTERM $pid”

    或更强的信号,“sudo kill - SIGKILL $pid”

通常在试图终止进程时使用这些信号。SIGTERM 将向附近的进程发送终止信号以安全地终止进程,但 SIGKILL 是更强大的信号

但在你的情况下,如果权限不是问题,你可以试试这个。

于 2014-01-09T12:48:10.270 回答