我正在编写一个小型 bash 脚本,它可以打开几个应用程序(其中包括几个 chrome 窗口),等待输入,并在输入正确后再次关闭所有打开的应用程序。
为了终止应用程序,我发现了两种不同的方法:使用kill $PID
或使用wmctrl -c <WIN>
在我的情况下,有多个 chrome 窗口打开(不仅仅是脚本启动的窗口)。chrome 的窗口标题会随着访问的 URL 而变化,因此在我看来使用wmctrl -c
没有什么帮助。此外,如果另一个窗口(例如 Firefox 实例)有类似的窗口标题,它也会被关闭。
这让我想到了kill
命令。但我不知道如何识别我想要终止的 Chrome 窗口的 PID。
我尝试了这个:
pid=$(ps | grep chromium | cut -d " " -f1 | head -n1)
if [ -n "$pid" ]
then
echo "...Closing Chromium"
kill -15 $pid
else
echo "...Chromium not found"
fi
但它会关闭所有 Chromium 窗口。
知道如何识别我想要终止的 chrome 窗口吗?
答案1
答案2
bash 手册说:
$! Expands to the process ID of the most recently executed background (asynchronous) command.
因此,在启动 chromium 进程后,直接存储所有所需的 PID。可能像这样:
chromium & job1=$!
echo job1=$job1
#...
kill $job1
bash 中也有用于 PID 列表的数组......