Bash

執行 bash 函式執行螢幕

  • July 20, 2021

我正在使用 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,這似乎在 3 之後停止。創建了螢幕,但沒有列印任何內容,並且 jupyterlab 沒有啟動。

我究竟做錯了什麼?

該函式停止的原因是您生成了一個互動式螢幕會話。您可能想要這樣做:

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    
}

引用自:https://unix.stackexchange.com/questions/659143