bash - 使用 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
谁能指出我在这里做错了什么?
解决方案
简单的答案是:
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
直到文件存在。
推荐阅读
- rider - 如何保持当前行在编辑器中垂直居中
- javascript - 以编程方式检查复选框后的Jquery执行功能
- javascript - 如何从我的 django 模型中提取到 javascript 变量(Django)
- javascript - 从 Javascript 到 Flask 的注销请求
- javascript - 在 Object.entries 上运行 forEach 不会返回与 for 循环相同的内容
- c++ - 表示单个全局类实例的最佳方式是什么?
- flutter - Flutter websocket onOpen?
- c++ - 当输出与窗口宽度匹配时,Windows 控制台(conhost)会丢弃换行符
- selenium - 如何在 QAF 中设置代理
- angular11 - 如何通过服务在组件之间共享数据?