如何终止从 bash 脚本调用的应用程序?

如何终止从 bash 脚本调用的应用程序?

我想从脚本调用某个应用程序。我使用的应用程序不允许在 CLI 中使用任何参数,但我需要在两个不同的显示器和屏幕分辨率下对其进行测试,因此我有两个不同的配置文件。要调用所需的版本,我使用简单的脚本(将其命名为notebook.sh):

#!/bin/sh

rm /home/user/.app/config.ini
cp /home/user/.app/config.ini.1366x768 /home/user/.app/config.ini
sleep 1
/usr/local/bin/app &

cp修改了线路的第二个版本。

好的,很简单。但是当我退出此应用程序(Ctrl+Q 内置功能)时,它仍然运行。调用ps命令我看到了app进程notebook.sh列表中的内容。

我的问题是:应该如何notebook.sh编写脚本来app完全终止/终止脚本?类似于以下代码:

if [ "$1" = "start" ]; then /usr/bin/mplayer -fs -osdlevel 0 $2 ; fi
if [ "$1" = "stop" ]; then killall mplayer ; fi

答案1

我为您提供一个更简单但更丑陋的解决方案。:-)
您可以使用名为的包在一段时间后终止一个进程timelimit

sudo apt-get install timelimit

(在终端上)

timelimit 的 -t 选项是进程保持活动的秒数:之后它将被 SIGKILL 信号(粗暴地)杀死(如果您没有使用 -S 选项指定其他信号)。

timelimit OPTIONS command arguments

编辑:如果您想使用“专业”解决方案,请使用trap

trap 'kill $(jobs -p)' EXIT

它将在“EXIT”信号后执行逗号内的命令。
要测试它:trap "yes test" EXIT ... then use the exit command. Bye.

相关内容