首页 > 解决方案 > 使用 bash 在单独的屏幕窗口中执行两个程序

问题描述

我一直在玩弄创建一个功能性的 bash 脚本来解决我的问题,但没有成功。

问题:

我需要从不同的终端(或使用的窗口screen)执行这两个脚本:

fluidsynth -a alsa -c 3 -g 3 /usr/share/sound/sf2/piano.sf2
aconnect 20:0 128:0

我会手动启动screen并执行第一个命令,然后ctrl+a+c执行第二个。

重要的部分:

第二条命令只能在fluidsynth程序成功启动后运行,并且必须从不同的终端运行。

到目前为止我的尝试:

screen -S fluid /usr/midi/fluid.sh & sleep 10 aconnect 20:0 128:0

流体.sh 文件:

fluidsynth -a alsa -c 3 -g 3 /usr/share/sound/sf2/piano.sf2

谁能指出我在这里做错了什么?

标签: bash

解决方案


简单的答案是:

screen -d -m -S fluid fluidsynth -a alsa -c 3 -g 3 /usr/share/sound/sf2/piano.sf2
screen -d -m -S connect bash -c "sleep 10; aconnect 20:0 128:0"

-d -m告诉屏幕以分离模式启动。

如果你有办法检测fluidsynth 的上电,例如应该有一个文件,你可以sleep 10用一个循环替换它,sleep 1直到文件存在。


推荐阅读