首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于其他应用程序启动和关闭应用程序

基于其他应用程序启动和关闭应用程序
EN

Unix & Linux用户
提问于 2021-04-21 13:17:05
回答 1查看 840关注 0票数 2

我正在使用Ubuntu20.04,我正在寻找一个bash脚本来同时启动Quodlibet (一个音乐应用程序)和conky。编辑:想法是在.desktop启动程序中使用sh脚本

  1. 开始引用
  2. 2秒后开始
  3. 如果Quodlibet关闭,则关闭conky

我做了一些测试,但我相信下面的脚本不能工作,因为我没有捕捉到Quodlibet的结尾。当我关闭Quodlibet的时候,Conky还在跑。

代码语言:javascript
复制
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT

quodlibet &
sleep 2 &&
conky &

wait

EDIT:独立的.sh解决方案

工作脚本,感谢@berndbausch。

代码语言:javascript
复制
#!/bin/bash
quodlibet & QUODPID=$!
sleep 3 &&
conky & CONKYPID=$!

wait $QUODPID
kill $CONKYPID

EDIT:使用自定义启动程序

正如@xhienne在他的回答中所解释的那样,在.desktop文件中使用.desktop以及他的脚本都很好。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-04-21 14:36:44

只需在当前shell中启动Quodlibet,而不是在子进程中:

代码语言:javascript
复制
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT

(sleep 2 && conky) &

quodlibet

您提到希望在图形环境中从.desktop文件中运行此脚本。@fra让我意识到,以这种方式运行的每个进程都很可能继承他们父进程的进程组,因此,kill 0将杀死启动进程和(可能)它启动的所有进程。这肯定不是你想要的。

解决这一问题的方法是使用setsid启动脚本,以便创建一个专门用于它的新流程组:

代码语言:javascript
复制
setsid /path/to/script.sh
票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/646110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档