我正在使用Ubuntu20.04,我正在寻找一个bash脚本来同时启动Quodlibet (一个音乐应用程序)和conky。编辑:想法是在.desktop启动程序中使用sh脚本
我做了一些测试,但我相信下面的脚本不能工作,因为我没有捕捉到Quodlibet的结尾。当我关闭Quodlibet的时候,Conky还在跑。
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT
quodlibet &
sleep 2 &&
conky &
waitEDIT:独立的.sh解决方案
工作脚本,感谢@berndbausch。
#!/bin/bash
quodlibet & QUODPID=$!
sleep 3 &&
conky & CONKYPID=$!
wait $QUODPID
kill $CONKYPIDEDIT:使用自定义启动程序
正如@xhienne在他的回答中所解释的那样,在.desktop文件中使用.desktop以及他的脚本都很好。
发布于 2021-04-21 14:36:44
只需在当前shell中启动Quodlibet,而不是在子进程中:
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT
(sleep 2 && conky) &
quodlibet您提到希望在图形环境中从.desktop文件中运行此脚本。@fra让我意识到,以这种方式运行的每个进程都很可能继承他们父进程的进程组,因此,kill 0将杀死启动进程和(可能)它启动的所有进程。这肯定不是你想要的。
解决这一问题的方法是使用setsid启动脚本,以便创建一个专门用于它的新流程组:
setsid /path/to/script.shhttps://unix.stackexchange.com/questions/646110
复制相似问题