我想从脚本调用某个应用程序。我使用的应用程序不允许在 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.