Ubuntu 14.04 - 如何使用脚本在关机时播放 ogg 文件?

Ubuntu 14.04 - How do I play an ogg file on shutdown with a script?

所以,我试图让脚本在 shutdown/restart 上播放一个简短的 ogg 文件,但我似乎在实际运行时遇到了一些麻烦。现在,我在 init.d 中有脚本,在 rc0.d 和 rc6.d 中有符号 link,手动执行时它们似乎都有效。脚本和 link 都以 "K99" 开头,因为系统应该按字母顺序遍历列表,而 K99 应该使它在正确的时间执行。 (我尝试过其他东西,比如 K00、K50 和 "S" 变体,因为我看到了一些其他的脚本;但它们似乎没有改变任何东西。)

#!/bin/sh
## play shutdown sound

pulseaudio --start
echo -e "Shutdown sound script."
/usr/bin/play /home/username/Downloads/sound_file.ogg
sleep 3

脚本我觉得很简单。 ogg 文件和脚本都具有 755 权限。该文件只有大约 3 秒长,所以我认为这也不是问题。最初,脚本似乎根本不起作用,所以我添加了 sleep 命令。现在关闭似乎需要大约三秒钟的时间,所以我认为脚本是 运行ning,但我有一种感觉 Ubuntu 可能正在杀死音频守护进程(如果有的话?)在脚本关闭之前,但我不确定。我花了几天时间试图弄清楚这个看似简单的事情。有什么想法吗?

抱歉,如果这最终变得微不足道,我在 Ubuntu 系统方面还是个新手。 (虽然我可以通过简单的修复来解决问题!:))

更新 它现在可以正常工作了!在搜索了为什么声音可能会播放多次,尤其是在启动时,我对 upstart 系统有了更多的了解。它在启动时查看 etc/init/ 目录和 运行 中的脚本。我记得当声音还没有播放时,我曾尝试在其中放置一个 upstart 脚本。显然我忘记删除它并且它在所有 运行 级别上执行从而导致双重关闭和启动实例。现在它消失了,一切都应该如此。 (虽然现在我已经修好了,但我有点讨厌听到声音,可能得找一个新的,哈哈。)谢谢大家的帮助。

TL;DR: 将脚本放入 init.d 并象征性地 link 到 etc/rc0.d(和 etc/rc6 .d 如果你也想在重启时使用它)。如果它播放了多次,你可能在不应该的地方重复了。

关机时执行脚本

  • 将脚本放入 /etc/rc0.d
  • 使其可执行 (sudo chmod +x script.sh)
  • 注意:该目录下的脚本是按字母顺序执行的 订单

PulseAudio

PulseAudio 是一个声音服务器。当声音数据在您的应用程序和硬件之间传递时,它允许您对声音数据执行高级操作。

在您的脚本开头启动 PulseAudio:

pulseaudio --start

注意:您必须在您的脚本中try/use此命令,因为启动音频守护程序和播放您的 ogg 文件只是时间问题。