一键启动多个 Chrome 实例并自动清理的 Bash 脚本分享!

目录

[一、📦 脚本功能概览](#一、📦 脚本功能概览)

[二、📜 脚本代码一览](#二、📜 脚本代码一览)

[三、🔍 脚本功能说明](#三、🔍 脚本功能说明)

[(一)✅ 支持批量启动多个 Chrome 实例](#(一)✅ 支持批量启动多个 Chrome 实例)

[(二)✅ 每个实例使用独立用户数据目录](#(二)✅ 每个实例使用独立用户数据目录)

[(三)✅ 启动后自动等待用户关闭](#(三)✅ 启动后自动等待用户关闭)

(四)✅自动清理所有临时数据

[四、🛠️ 最推荐用法:直接添加 alias,随时随地一键运行!](#四、🛠️ 最推荐用法:直接添加 alias,随时随地一键运行!)

[(一)✅ 第一步:保存脚本并赋予执行权限](#(一)✅ 第一步:保存脚本并赋予执行权限)

[(二)✅ 第二步:添加 alias 到 shell 配置](#(二)✅ 第二步:添加 alias 到 shell 配置)

(三)使用案列说明

[1. 打开 1 个实例,默认页面](#1. 打开 1 个实例,默认页面)

[2. 打开 3 个实例,访问指定网址](#2. 打开 3 个实例,访问指定网址)

[3. 打开 5 个实例并打开本地服务](#3. 打开 5 个实例并打开本地服务)

[💡 小贴士:alias 更建议这样取名](#💡 小贴士:alias 更建议这样取名)

[五、🎯 小结](#五、🎯 小结)


干货分享,感谢您的阅读!!!

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

今天就给大家分享一个 Bash 脚本,帮你一键完成以上操作!关键是:不脏系统、不留痕、自动清理!

一、📦 脚本功能概览

这个脚本主要完成以下几件事:

  1. 接收一个数字参数,表示要打开几个 Chrome 实例。

  2. 每个实例打开指定网页,如果没指定,默认打开 example.com

  3. 每个实例使用一个临时用户目录(profile),避免配置冲突。

  4. 等所有 Chrome 实例关闭后,自动清理这些临时目录。

二、📜 脚本代码一览

下面是完整脚本,直接复制保存为 open_chromes.sh,加上执行权限即可使用。

bash 复制代码
#!/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 实例。例如:

bash 复制代码
./open_chromes.sh 3 https://google.com https://github.com

将启动 3 个实例,每个打开 Google 和 GitHub 两个标签页。

(二)✅ 每个实例使用独立用户数据目录

通过 --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,记得加上执行权限:

bash 复制代码
mkdir -p ~/scripts
mv open_chromes.sh ~/scripts/
chmod +x ~/scripts/open_chromes.sh

(二)✅ 第二步:添加 alias 到 shell 配置

打开你的 shell 配置文件(Zsh 用户就是 .zshrc,Bash 用户是 .bash_profile):

bash 复制代码
nano ~/.zshrc # 或 nano ~/.bash_profile

添加如下 alias(你可以自由修改名字,这里用 zyfoc 表示 open chrome):

bash 复制代码
alias zyfoc="~/scripts/open_chromes.sh"

保存并让配置立即生效:

bash 复制代码
source ~/.zshrc # 或 source ~/.bash_profile

(三)使用案列说明

🚀 从此,你只需要敲一行命令就能执行脚本:

1. 打开 1 个实例,默认页面
bash 复制代码
zyfoc 1
2. 打开 3 个实例,访问指定网址
java 复制代码
zyfoc 3 https://google.com https://github.com
3. 打开 5 个实例并打开本地服务
bash 复制代码
zyfoc 5 http://localhost:3000/login http://localhost:3000/dashboard

💡 小贴士:alias 更建议这样取名

别名 含义 推荐指数
zyfoc open chrome 的缩写 ⭐⭐⭐⭐⭐(简洁)
chromex chrome + 批量执行风格 ⭐⭐⭐⭐
testweb 用于测试网页打开 ⭐⭐⭐
browsex 多窗口浏览扩展工具 ⭐⭐⭐

五、🎯 小结

这个 Bash 脚本实现了:

  • ✔️ 快速启动任意数量 Chrome 实例

  • ✔️ 每个实例独立运行,不干扰主浏览器

  • ✔️ 支持多个标签页

  • ✔️ 自动等待 + 自动清理,使用无痕!

简单几行 Bash,就能解决很多重复操作的烦恼。如果你有类似需求,赶紧拿去试试吧!

相关推荐
喜欢你的名字和你笑的样子3 分钟前
前端跨域问题,后端解决方案
前端
Allen Bright26 分钟前
【HTML-2】HTML 标题标签:构建网页结构的基础
前端·html
Dragon Wu36 分钟前
Taro Error: chunk common [mini-css-extract-plugin]
前端·小程序·前端框架·react·taro
Dragon Wu41 分钟前
Taro 安全区域
前端·小程序·前端框架·taro
yuren_xia1 小时前
Vue3 组件之间传值
前端·javascript·vue.js
爱吃鱼的锅包肉1 小时前
记录一下flutter项目自己封窗的弹窗
前端·javascript·flutter
Frank学习路上1 小时前
【Flutter】创建BMI计算器应用并添加依赖和打包
前端·javascript·flutter
风清云淡_A1 小时前
【react18】在styled-components中引入图片报错
前端·reactjs
想喝奶茶啾啾2 小时前
Linux bash shell的循环命令for、while和until
linux·bash
GUIQU.2 小时前
【Node.js】Web开发框架
前端·node.js