当我退出 Linux 中的 SSH 会话时,MPlayer 会停止运行

当我退出 Linux 中的 SSH 会话时,MPlayer 会停止运行

我想通过 SSH 启动 MPlayer 并让它运行(我是个收音机迷)。为此,我通过 SSH 连接到我的远程机器(运行 LUbuntu 的 Cubietruck),然后发出以下命令:

screen mplayer -playlist .path/to/the/playlist

一切都按预期运行,但当我退出 SSH 会话时,音乐完全停止。重新登录后,我再也找不到我的屏幕实例(screen -ls显示未找到套接字/var/run/screen/

我曾将 screen 与其他应用程序(如 rTorrent)一起使用,一切正常。这是 MPlayer 特有的问题吗?

更新:我使用屏幕而不采用“nohup”方式的原因是我想要重新获得对 mplayer 实例的访问权限(更改电台、更改播放列表等)

答案1

这是你的命令:

screen mplayer -playlist .path/to/the/playlist

使用screen似乎有点过头了。要在退出终端会话后在 Linux 机器上持续在后台运行,我建议使用nohup&这样:

nohup mplayer -playlist .path/to/the/playlist &

nohup代表“不挂断”,这意味着您可以从终端会话中注销,并且命令nohup将继续运行&

答案2

你应该看看:http://www.tuxradar.com/content/command-line-tricks-smart-geeks

有趣的一点:

远程控制 MPlayer

这个世界上有两种类型的人:那些认为Mplayer是现有历史上的最佳媒体玩家,而Mplayer较鲜为人知的功能之一就是从控制台上控制它的能力。从文件或FIFO中读取。

mkfifo ~/mplayer-control mplayer -slave -input file=/home/user/mplayercontrol filetoplay

然后,在另一个终端或脚本中输入:

回显“暂停”>〜/ mplayer-control

此命令将暂停当前正在运行的 MPlayer,再次发出该命令将恢复播放。请注意,您必须向 MPlayer 提供控制文件的完整路径,例如 /home/user 等,因为单独使用 ~/mplayer-control 不起作用。您可以向 MPlayer 发送许多其他命令 - 事实上,程序中的任何键盘操作都会触发您可以在控制脚本中使用的命令。您甚至可以使用 SSH 或 Netcat 从网络上的另一台计算机操作 MPlayer。请参阅此示例:

ssh 用户@主机“echo pause >mplayer-control”

这里,我们使用用户名 user 登录到远程机器(主机),并运行命令将 pause 发送到远程机器的 MPlayer 控制文件。当然,如果您启用了 SSH 密钥身份验证,这个过程会更快,因为您不需要每次都输入密码。

如果您以从属模式运行 MPlayer(如他们在此处所提到的),那么控制台做什么就不重要了,它应该让 MPlayer 留在后台监视输入文件的命令,而不是调用它的终端窗口。

最后说明:他们说从不同的终端执行 blah 操作只是为了表明它可以通过网络真正工作,只要您按照他们所显示的方式编辑列出的文件,文件是否由同一台机器或另一台机器编辑并不重要,重要的是 MPlayer 正在监视该文件中放入的任何命令,然后根据命令要求它执行的操作进行操作。

相关内容