每当我想通过键入以下命令来停止在RaspBMC中运行mpd服务器时:
service mpd stop控制台显示了典型的[ ok ]消息:
[ ok ] Stopping Music Player Daemon: mpd.但是服务并没有真正停止(进程一直在运行)。我在服务脚本中进行了深入搜索,并找到了启动停止守护进程的调用:
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命令使服务停止正确,我应该更改什么?
发布于 2014-01-09 17:22:58
我终于找到了!问题是,为mpd.conf中的pid文件指定的路径是
pid_file "~/.mpd/pid"
当从service命令中停止它时,它似乎不能正常工作。现在我把它换成
pid_file "/home/MyUserName/.mpd/pid"
而且工作正常,但我会尽快将它移到/var/run/mpd/,因为它似乎是合适的位置。
发布于 2014-01-09 12:48:10
是的,这可能是许可问题。
通常,这些信号是在试图杀死进程时使用的。SIGTERM将发送终止信号到进程,接近安全地杀死进程,但是SIGKILL是更强的信号。
但在您的情况下,如果权限不是问题,则可以尝试此方法。
https://stackoverflow.com/questions/21018491
复制相似问题