如何通过命令行检查 Jupyter 活动笔记本

Posted

技术标签:

【中文标题】如何通过命令行检查 Jupyter 活动笔记本【英文标题】:How to check for Jupyter active notebooks through command line 【发布时间】:2021-02-12 13:47:03 【问题描述】:

我有一个运行 Jupyterhub 版本 0.8.1+ 的 AWS EMR,我想检查是否有任何活动的笔记本正在运行任何代码。 我尝试了以下命令,但它们似乎没有输出我在此处查找的内容,因为用户服务器始终在运行,并且笔记本可以在不执行任何代码的情况下运行。

# only lists running servers and jovyan is always running.
sudo docker exec jupyterhub jupyter notebook list
# No useful information outputted
curl -k -i -H "Accept: application/json" "https://localhost:9443/api/sessions"
# always lists processes regardless of running notebooks
ps aux | grep ipykernel
# The last_activity only updates when a user creates a new file or folder in the ui.
curl -k https://localhost:9443/hub/api/users/$user -H "Authorization: token $admin_token" | jq -r .last_activity
curl -k https://localhost:9443/hub/api/users -H "Authorization: token $admin_token" | jq -r .last_activity

我正在关注这个 AWS 博客,以在终止集群之前检查整个 EMR 是否处于空闲状态,但他们似乎从未完全实施过 jupyter 检查。 https://aws.amazon.com/blogs/big-data/optimize-amazon-emr-costs-with-idle-checks-and-automatic-resource-termination-using-advanced-amazon-cloudwatch-metrics-and-aws-lambda/ 大部分引用的文件都可以在 Github 找到https://github.com/septian-putra/emr-monitoring

【问题讨论】:

【参考方案1】:

要查看笔记本是否因“忙”而“空闲”,您可以运行curl -ks https://localhost:9443/user/jovyan/api/kernels -H "Authorization: token $admin_token" 使用此命令,您只需将其放入带有 grep -q 的简单 if 语句中,以获得真假空闲值。

if [ $(curl -ks https://localhost:9443/user/jovyan/api/kernels -H "Authorization: token $admin_token" | grep -q "busy") ]; then
    JUPYTER_BUSY_NOTEBOOKS=1
else
    JUPYTER_BUSY_NOTEBOOKS=0
fi

(curl -ks 用于静默输出并忽略 ssl.jovyan 作为我的管理员用户)

文档 https://jupyter-kernel-gateway.readthedocs.io/en/latest/websocket-mode.html#http-resources /api/sessions 也可能有用。

【讨论】:

以上是关于如何通过命令行检查 Jupyter 活动笔记本的主要内容,如果未能解决你的问题,请参考以下文章

从 Jupyter notebook 运行交互式命令行代码

命令行python和jupyter笔记本使用两个不同版本的手电筒

如何从命令行访问 Apache PySpark?

如何将jupyter笔记本转换为幻灯片

在 Windows 上通过命令行运行 Jupyter

Ipython/Jupyter:等待 kernel_info 回复超时