我有一个包含以下行的bash脚本:
.
.
if [ -z "$(pgrep mplayer)" ]; then
/usr/bin/mplayer -slave -input file=/home/administrator/files/mplayer-control.pipe http:/www.musicserveraddress.com/ &
fi
.
.
Other things to execute
.
exit
会发生什么是mplayer连接到streamingserver并开始播放流。但是,脚本永远不会继续前进。我添加了一个&符号来将此进程移动到后台,以便脚本继续运行然后退出(保持音频流播放)。
我该怎样做才能实现这一目标? 在此先感谢/ J
编辑:当我从命令行运行脚本时,它按计划运行,但它打算作为cron作业运行(并且pgrep仅在自上次cron作业后崩溃时才启动mplayer)。当作为一个cron工作运行时,没有任何反应......
答案 0 :(得分:0)
在命令开头尝试使用nohup
:
nohup /usr/bin/mplayer -slave -input file=/home/administrator/files/mplayer-control.pipe http:/www.musicserveraddress.com/ &
答案 1 :(得分:0)
你使用的命令对我来说非常好。唯一让人感到困惑的是你在脚本完成时没有得到bash提示符,但它实际上就在那里,尝试按Enter键。
由于您希望通过管道控制播放器并且在后台,我建议也从控制台重定向标准流并将所有输出发送到日志文件:
(
exec </dev/null
exec >/dev/null
exec 2>/dev/null
umask 0
cd /
exec setsid mplayer -slave -idle -input /home/user/control.pipe http://server.com > /var/log/mplayer.log 2>&1
) &
答案 2 :(得分:0)
您可能也想使用setsid。这对我有用。