执行bash函数来运行screen

执行bash函数来运行screen

我正在使用 aws ubuntu 实例。我想创建一个别名/函数来运行一些快捷方式,例如在屏幕中激活 python 虚拟环境。

我已经做了这个功能,例如:

# Alias for jupyter notebook
function start_jupyter() {
    cd my_path/lab_workspace/  # 1. cd into my workspace
    source labworkspaceenv/bin/activate  # 2. activate my python virtualenv
    screen -S jupyter_lab  # 3. start screen
    echo 'You are in screen for jupyter lab'  # 4. print something
    jupyter lab  # 5. start jupyter lab
}

问题是,当我使用 运行该函数时start_jupyter,这似乎在创建屏幕后停止,但没有打印任何内容,并且 jupyterlab 未启动。

我究竟做错了什么?

答案1

该函数停止的原因是您生成了一个交互式屏幕会话。您可能想这样做:

screen -dmS jupyter_lab jupyter lab

这将创建一个名为 的独立屏幕会话jupyter_lab并在其中执行命令。

根据screen --help信息:

-dmS name     Start as daemon: Screen session in detached mode.

所以,你的功能将是:

# Alias for jupyter notebook
function start_jupyter() {
    cd my_path/lab_workspace/  # 1. cd into my workspace
    source labworkspaceenv/bin/activate  # 2. activate my python virtualenv
    screen -dmS jupyter_lab jupyter lab  # 3. start screen    
}

相关内容