💡 前言:程式碼為何會「罷工」?
當我們在 AWS EC2 這種雲端伺服器上,用 SSH 遠端連線執行 jupyter lab 時,是不是常遇到一個尷尬的狀況?
只要你一關閉本地電腦的連線視窗,遠端伺服器上的 Jupyter Lab 頁面就立刻打不開了,彷彿它跟著你「下班」了一樣。
這就像你在咖啡店點了一杯手沖咖啡,店員說:「好的,但你必須全程盯著我沖泡,你一轉頭,咖啡機就關機!」🔑 專業術語解釋
這在技術上稱為「前景執行」(Foreground Execution)。當你的 SSH 連線終止時,你的程式碼就收到了「掛斷信號」(SIGHUP),然後自動關閉了。
我們的目標,就是要為 Jupyter Lab 找一個可靠的店長,讓它能不依賴我們連線,也能 24 小時自動營業,並且在伺服器(咖啡店)重開機後,也能立刻自動開門做生意。
這個「可靠的店長」,在 Linux 系統中,就是 systemd 服務管理器。
🛠️ 三大步驟:建立您的 Jupyter 咖啡店服務
systemd 是 Linux 系統中用來管理服務的標準工具,它能夠讓您的程式碼以「系統服務」的方式運行。
步驟 1:建立咖啡店的「經營許可證」(jupyter.service 檔案)
我們需要建立一個 .service 服務描述檔,告訴系統該如何啟動和管理 Jupyter Lab。
- 連線到您的 EC2 實例。
- 建立服務檔案:
sudo nano /etc/systemd/system/jupyter.service
- 貼上以下內容,注意將
ExecStart替換為您系統中jupyter的實際路徑(通常執行which jupyter獲得的路徑,例如/home/ubuntu/.local/bin/jupyter):
[Unit]
Description=Jupyter Lab Service
# 確保網路連線準備好後再啟動
After=network.target
[Service]
# 指定負責經營的員工 (使用者)
User=ubuntu
# 指定營業地點 (起始目錄)
WorkingDirectory=/home/ubuntu
# 啟動咖啡店 (記得這邊修要修改路徑)
ExecStart=/home/ubuntu/.local/bin/jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
# 設定為 VIP 服務:即使當機也要自動重啟
Restart=always
[Install]
# 設定在系統準備好後自動啟動
WantedBy=multi-user.target
🔑 小知識: 這裡的 Restart=always 就像給店長開了「無限復活」的權限,保證服務穩定性。
步驟 2:發放「營業執照」(啟用服務)
服務檔建立後,我們需要通知 systemd 這個新服務的存在,並將它加入自動啟動清單。
- 重新載入配置:讓系統看到新的服務檔案。
sudo systemctl daemon-reload
- 設定開機自動啟動:這一步是確保伺服器(咖啡店)重開機後,服務(Jupyter Lab)能立刻自動開始營業。
sudo systemctl enable jupyter.service
步驟 3:正式「開張營業」(啟動服務)
現在我們可以立即啟動服務,無需等待重開機:
sudo systemctl start jupyter.service
📈 成果驗收:確認咖啡店已正式營業
最後,使用以下指令確認您的 Jupyter Lab 服務是否已成功啟動並常駐運行:
sudo systemctl status jupyter.service
如果看到 Active: active (running) 關鍵狀態,恭喜您,您的 Jupyter Lab 已經成功從需要人盯著的「臨時攤位」,升級為 24 小時自動營業的咖啡店了!
總結服務管理常用指令

現在,無論您關閉 SSH 連線視窗,或是將 EC2 實例停止後再啟動,您的 Jupyter Lab 都能像一個可靠的系統服務一樣,隨時等著您透過瀏覽器來連線工作!
📺 延伸閱讀:影片教學資源
如果您想了解如何在 AWS EC2 上從零開始建立 Python 與 Jupyter 環境,歡迎參考以下影片,它提供了完整的 EC2 設定、SSH 連線、以及 Jupyter Notebook 安裝教學:
- Python on AWS for Beginners: EC2, SSH, and Jupyter Notebook Setup https://www.youtube.com/watch?v=zQGiKKGcUTE















