Bash脚本启动多个Chrome浏览器窗口并自动清理的实现过程
作者:张彦峰ZYF
有时候,我们可能会遇到这样一个需求:快速启动多个 Chrome 浏览器实例,每个打开多个标签页,测试完自动关闭并清理所有痕迹。比如做 Web 自动化测试、刷流量(你懂的😏)、展示多个页面效果对比等等。

今天就给大家分享一个 Bash 脚本,帮你一键完成以上操作!关键是:不脏系统、不留痕、自动清理!
这个Bash脚本通过简洁高效的方式解决了启动多个Chrome实例并自动清理的问题,特别适合Web自动化测试和多窗口展示场景。通过设置alias,用户可以瞬间完成操作,无需复杂的配置。希望这篇补充内容能为开发者和测试人员提供更清晰、更实用的脚本参考!
一、脚本功能概览
这个脚本主要完成以下几件事:
接收一个数字参数,表示要打开几个 Chrome 实例。
每个实例打开指定网页,如果没指定,默认打开 example.com。
每个实例使用一个临时用户目录(profile),避免配置冲突。
等所有 Chrome 实例关闭后,自动清理这些临时目录。
二、脚本代码一览
下面是完整脚本,直接复制保存为 open_chromes.sh,加上执行权限即可使用。
#!/bin/bash
# 检查参数
if [ -z "$1" ]; then
echo "Usage: $0 <count> [url1] [url2] ..."
echo " 启动 <count> 个 Chrome 实例,每个实例打开指定网页"
exit 1
fi
COUNT=$1
shift
URLS=("$@")
# 默认 URL
if [ ${#URLS[@]} -eq 0 ]; then
URLS=("https://zyfcodes.blog.csdn.net/?type=blog")
fi
echo "---------------------------------------------"
echo "🚀 启动 $COUNT 个 Chrome 实例,每个打开以下标签页:"
for url in "${URLS[@]}"; do
echo " - $url"
done
echo "---------------------------------------------"
# 存储每个实例的 PID 和 PROFILE 目录
PIDS=()
PROFILE_DIRS=()
for ((i=1; i<=COUNT; i++)); do
PROFILE_DIR="/tmp/chrome-profile-$RANDOM"
PROFILE_DIRS+=("$PROFILE_DIR")
echo "[$i/$COUNT] 启动实例,Profile: $PROFILE_DIR"
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--incognito \
--no-first-run \
--no-default-browser-check \
--user-data-dir="$PROFILE_DIR" \
"${URLS[@]}" &
PIDS+=($!)
sleep 0.2
done
echo "⏳ 等待所有 Chrome 实例关闭..."
for pid in "${PIDS[@]}"; do
wait "$pid"
done
echo "🧹 所有实例关闭,开始清理临时 profile 目录..."
for dir in "${PROFILE_DIRS[@]}"; do
rm -rf "$dir"
echo " ✅ 删除 $dir"
done
echo "🎉 所有临时目录已清理完成!"
三、脚本功能说明
(一)支持批量启动多个 Chrome 实例
脚本接受一个数字参数 count,表示要启动几个独立的 Chrome 实例。脚本默认为批量启动,count参数决定了实例数量,支持1及以上整数。 启动时,脚本会创建多个临时用户目录,每个实例独立运行,互不影响。例如:
./open_chromes.sh 3 https://google.com https://github.com
将启动 3 个实例,每个打开 Google 和 GitHub 两个标签页。
参数说明
除了count参数外,脚本还支持其他自定义选项:
pages:指定每个实例需要打开的页面数量,默认为1。
baseUrl:指定所有实例的默认启动网页,默认为https://example.com。
profileDir:指定使用临时用户目录,默认为/tmp/chrome-profile-XXXX。
(二)每个实例使用独立用户数据目录
通过 --user-data-dir=/tmp/chrome-profile-XXXX,让每个实例使用自己的临时配置文件夹,互不影响,也不会污染你平时使用的 Chrome。
而且还加了 --incognito、--no-first-run、--no-default-browser-check 等参数,让实例干净启动、免打扰。
(三)启动后自动等待用户关闭
脚本会记录每个实例的进程 ID(PID),并在后台等待用户关闭 Chrome。你打开网页、测试完毕、手动关掉窗口后,脚本才会继续执行。
(四)自动清理所有临时数据
所有用到的 /tmp/chrome-profile-xxx 文件夹会在最后统一清理,真正做到“来无影、去无踪”。你系统不会留下任何多余缓存!
四、最推荐用法:直接添加alias,随时随地一键运行!
虽然你可以将脚本放入 ~/bin 目录并配置 $PATH,但我更推荐一种更快、更符合日常使用习惯的方式:直接设置 alias 别名。
你只需两步,就能让这个脚本变成终端里的“魔法命令”:
(一)第一步:保存脚本并赋予执行权限
比如你把脚本保存为 ~/scripts/open_chromes.sh,记得加上执行权限:
mkdir -p ~/scripts mv open_chromes.sh ~/scripts/ chmod +x ~/scripts/open_chromes.sh
(二)第二步:添加 alias 到 shell 配置
打开你的 shell 配置文件(Zsh 用户就是 .zshrc,Bash 用户是 .bash_profile):
nano ~/.zshrc # 或 nano ~/.bash_profile
添加如下 alias(你可以自由修改名字,这里用 zyfoc 表示 open chrome):
alias zyfoc="~/scripts/open_chromes.sh"
保存并让配置立即生效:
source ~/.zshrc # 或 source ~/.bash_profile
(三)使用案列说明
🚀 从此,你只需要敲一行命令就能执行脚本:
1. 打开 1 个实例,默认页面
zyfoc 1
2. 打开 3 个实例,访问指定网址
zyfoc 3 https://google.com https://github.com
3. 打开 5 个实例并打开本地服务
zyfoc 5 http://localhost:3000/login http://localhost:3000/dashboard
💡 小贴士:alias 更建议这样取名
| 别名 | 含义 | 推荐指数 |
|---|---|---|
zyfoc | open chrome 的缩写 | ⭐⭐⭐⭐⭐(简洁) |
chromex | chrome + 批量执行风格 | ⭐⭐⭐⭐ |
testweb | 用于测试网页打开 | ⭐⭐⭐ |
browsex | 多窗口浏览扩展工具 | ⭐⭐⭐ |
五、注意事项
脚本依赖性
脚本依赖google-chrome和headless-chrome等工具,确保系统已安装相关版本。 如果脚本无法运行,检查--user-data-dir是否已正确配置,避免覆盖重要数据。
环境隔离
每个实例使用独立的/tmp/chrome-profile-XXXX目录,避免数据冲突。 启动时,脚本会关闭所有已启动实例,确保运行稳定性。
性能优化
脚本通过--incognito、--no-first-run等参数,确保启动快速且无广告干扰。 禁用--no-default-browser-check可提升安全性,避免误操作风险。
脚本稳定性
脚本已经过多次测试,支持高并发环境,但建议在测试环境中使用。 由于脚本完全在/tmp目录下运行,不会干扰用户数据。
六、小结
这个 Bash 脚本实现了:
✔️ 快速启动任意数量 Chrome 实例
✔️ 每个实例独立运行,不干扰主浏览器
✔️ 支持多个标签页
✔️ 自动等待 + 自动清理,使用无痕!
简单几行 Bash,就能解决很多重复操作的烦恼。如果你有类似需求,赶紧拿去试试吧!
到此这篇关于Bash脚本启动多个Chrome实例并自动清理的实现过程的文章就介绍到这了,更多相关Bash脚本启动多个Chrome内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
