You need to enable JavaScript to run this app. 如何通过命令行检测AWS EMR中JupyterHub环境的活跃代码执行笔记本
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行检测AWS EMR中JupyterHub环境的活跃代码执行笔记本

针对JupyterHub 0.8.1+ EMR环境的活跃笔记本检测方案

核心判断逻辑

需要识别的正在执行代码的活跃笔记本,本质是检测当前内核处于执行占用状态的进程,而非识别常驻的单用户服务、已启动但闲置的内核、仅打开UI界面的空笔记本。
你之前使用的命令失效的核心原因:

  • jupyter notebook list 仅展示常驻运行的单用户服务入口,不跟踪内核实际执行状态
  • 直接请求9443端口根路径下的/api/sessions无有效输出,是因为JupyterHub的代理规则将每个用户的Notebook服务路由在/user/<用户名>/路径下,根路径不挂载单用户API
  • ps aux | grep ipykernel 会抓取所有已启动的ipykernel进程,哪怕内核已经完成执行、长期闲置,无法区分是否在运行代码
  • 用户接口返回的last_activity在0.8.1版本中仅同步Hub层面的UI操作动作,不会更新单用户内核的代码执行状态,判定精度不足

可直接落地的命令行实现

第一步:获取Hub管理员访问权限

在EMR主节点执行以下命令,从本地Hub配置读取有效的管理员认证Token,避免手动配置凭证的麻烦:

# 读取0.8.1版本Hub容器内的本地认证凭证
ADMIN_TOKEN=$(sudo docker exec jupyterhub cat /data/jupyterhub_cookie_secret | head -c 32)
HUB_API_BASE="https://localhost:9443"

第二步:拉取所有在线用户的Notebook服务路由

通过Hub管理员接口获取所有已启动单用户服务的用户列表,拿到对应用户的API访问路径:

ONLINE_USERS=$(curl -sk -H "Authorization: token $ADMIN_TOKEN" \
  "$HUB_API_BASE/hub/api/users" | jq -r '.[].name')

第三步:逐用户检测正在执行代码的内核

利用单用户Notebook Server自带的内核状态接口,遍历所有用户的内核,判断是否存在执行状态为busy的活跃内核(状态为idle的即为打开但未运行代码的闲置内核):

TOTAL_ACTIVE_KERNELS=0
for username in $ONLINE_USERS; do
  # 拼接对应用户的内核状态API地址
  KERNEL_API="$HUB_API_BASE/user/$username/api/kernels"
  # 统计当前用户下处于执行中状态的内核数量
  BUSY_COUNT=$(curl -sk -H "Authorization: token $ADMIN_TOKEN" \
    "$KERNEL_API" | jq '[.[] | select(.execution_state == "busy")] | length')
  if [ "$BUSY_COUNT" -gt 0 ]; then
    echo "用户 $username 存在 $BUSY_COUNT 个正在执行代码的活跃内核"
    TOTAL_ACTIVE_KERNELS=$((TOTAL_ACTIVE_KERNELS + BUSY_COUNT))
  fi
done
# 输出最终集群层面的判定结果
if [ $TOTAL_ACTIVE_KERNELS -eq 0 ]; then
  echo "Jupyter层面无正在执行代码的活跃笔记本,符合空闲判定标准"
else
  echo "当前共存在 $TOTAL_ACTIVE_KERNELS 个正在执行代码的活跃笔记本,集群不满足空闲终止条件"
fi

EMR环境适配注意事项

  • 所有请求走Hub内置的反向代理即可完成全量状态检查,不需要逐个进入用户容器执行内部命令
  • 若需要叠加闲置时长判定,可以在请求内核状态时同时读取返回结果中的last_activity字段,将连续处于idle状态超过设定阈值(如30分钟)的内核判定为闲置,进一步提升空闲检测的精度
  • 0.8.1版本的单用户API默认开启权限校验,所有遍历请求必须携带有效的Hub管理员Token,否则会返回401无权限响应

内容的提问来源于stack exchange,提问作者Emme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 09:54:03