如何在服務器后臺運行Python腳本,并配置虛擬環境與GPU支持

使用Conda虛擬環境在服務器后臺運行Python腳本,并檢查GPU分配
在服務器開發環境中,我們需要確保Python腳本運行在指定的Conda虛擬環境中,并且確認是否正確分配了GPU資源。本文將通過一個完整的start.sh腳本,完成以下功能:

  1. 安裝Miniconda、查詢虛擬環境位置;
  2. 創建并激活指定的虛擬環境(如 test);
  3. 檢查是否分配GPU給Python腳本;
  4. 在后臺運行Python腳本。

一、安裝 Miniconda

如果服務器尚未安裝Conda,可以按照以下步驟安裝 Miniconda;若已經安裝,可跳過。

1. 下載Miniconda安裝包

根據服務器的操作系統下載對應版本的Miniconda:

  • Linux(64位系統):

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    
  • macOS(Intel芯片):

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
    
  • macOS(Apple Silicon芯片):

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
    

2. 安裝Miniconda

運行以下命令安裝Miniconda:

bash Miniconda3-latest-Linux-x86_64.sh

安裝過程中按提示操作,選擇默認路徑(如:/root/miniconda3)。安裝完成后,運行以下命令加載Conda:

source ~/miniconda3/etc/profile.d/conda.sh

3. 驗證安裝是否成功

運行以下命令檢查Conda是否安裝成功:

conda --version

如果輸出Conda的版本號,則說明安裝成功。


二、創建Conda虛擬環境

完成Miniconda安裝后,按照以下步驟創建虛擬環境:

1. 創建虛擬環境

運行以下命令創建一個名為test的虛擬環境,并安裝指定的Python版本(如 3.9):

conda create -n test python=3.9 -y

2. 激活虛擬環境

激活test虛擬環境:

conda activate test

3. 安裝依賴包

在虛擬環境中安裝需要的依賴包,比如numpy(若不需要,可跳過):

conda install numpy -y

4.編寫測試腳本mian.py

import time
import datetimedef main():print("Python腳本開始運行...")while True:current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")print(f"當前時間: {current_time}")time.sleep(5)  # 每5秒打印一次if __name__ == "__main__":main()

三、腳本內容

簡易版start.sh ,包含激活環境、后臺運行Python腳本,并將日志保存到output.log:

#!/bin/bash# 啟用嚴格模式
set -e# 1. 激活Conda虛擬環境
source ~/miniconda3/etc/profile.d/conda.sh
conda activate test# 2. 后臺運行Python腳本
nohup python main.py > output.log 2>&1 &
echo "Python腳本已經在后臺運行,日志輸出到output.log。"

升級版start.sh ,包含激活環境、檢查GPU分配、后臺運行Python腳本,檢查是否已有腳本運行、保存運行日志的功能:

#!/bin/bash# 啟用嚴格模式:遇到錯誤或未定義變量時立即退出腳本
set -e  # 遇到錯誤退出
set -u  # 使用未定義變量時退出# 1. 初始化Conda環境
# 確保Conda能夠正常工作
conda init bash
source ~/miniconda3/etc/profile.d/conda.sh# 2. 查詢Conda虛擬環境列表并激活指定環境
# 檢查虛擬環境是否存在
ENV_NAME="test"
if ! conda env list | grep -q "$ENV_NAME"; thenecho "虛擬環境 $ENV_NAME 不存在,請檢查環境名稱或創建環境!"exit 1
fi# 激活虛擬環境
conda activate $ENV_NAME
echo "已激活Conda虛擬環境:$ENV_NAME"# 3. 檢查GPU是否可用
# 使用nvidia-smi檢測GPU,并檢查是否分配給任務
if command -v nvidia-smi &> /dev/null; thenecho "檢測到GPU環境,當前GPU信息如下:"nvidia-smi
elseecho "未檢測到GPU,將使用CPU運行。"
fi# 4. 檢查是否已有腳本實例在運行
# 假設需要運行的Python腳本名為main.py
PYTHON_SCRIPT="main.py"# 查找運行中的腳本進程
RUNNING_PID=$(pgrep -f "$PYTHON_SCRIPT" || echo "")if [ -n "$RUNNING_PID" ]; thenecho "檢測到正在運行的腳本進程,PID:$RUNNING_PID,正在終止該進程..."kill -9 "$RUNNING_PID"echo "已終止進程 $RUNNING_PID。"
elseecho "未檢測到正在運行的腳本,準備啟動新任務。"
fi# 5. 后臺運行Python腳本并檢查GPU分配
# 使用nohup后臺運行Python腳本,并將日志保存到output.log
nohup python "$PYTHON_SCRIPT" > output.log 2>&1 &
NEW_PID=$!
echo "Python腳本 $PYTHON_SCRIPT 已在后臺運行,日志輸出到output.log。"
echo "新任務PID:$NEW_PID"# 6. 等待一段時間后檢查GPU使用情況
sleep 5
if command -v nvidia-smi &> /dev/null; thenecho "當前的 GPU 使用情況如下:"nvidia-smi | grep python || echo "未檢測到Python進程使用GPU。"
elseecho "無法檢測GPU使用情況,請確認GPU配置是否正確。"
fi

四、運行腳本

完成腳本編寫后,按照以下步驟運行:

1. 賦予執行權限

為腳本添加執行權限:

chmod +x start.sh

2. 啟動腳本

運行腳本有兩種方式:

  • 方式 1:直接運行腳本:

    ./start.sh
    
  • 方式 2:使用 bash 啟動腳本:

    bash start.sh
    

兩種方式效果相同,任選一種即可。


五、檢查腳本運行狀態

1. 查看日志

腳本運行的日志會保存在 output.log 文件中,可以通過以下命令查看:

tail -f output.log

2. 查看后臺任務

通過以下命令查看正在運行的 Python 腳本:

ps -ef | grep main.py

3. 停止后臺任務

如果需要手動停止后臺任務,可以通過 kill 命令終止:

kill <PID>

其中 <PID> 是運行的任務進程 ID。


六、總結

通過本文,我們學習了如何從頭安裝 Miniconda,創建一個名為 test 的虛擬環境,并使用 start.sh 腳本在服務器后臺運行 Python 腳本。腳本實現了以下功能:

  1. 自動激活指定的 Conda 虛擬環境;
  2. 檢查 GPU 是否可用,并確認 GPU 分配是否正確;
  3. 檢查是否已有任務在運行,如果有則終止;
  4. 后臺運行 Python 腳本,并將日志保存到文件。

希望本文對你有所幫助!如果你有其他問題或建議,歡迎在評論區留言!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79797.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端取經路——工程化渡劫:八戒的構建之道

大家好,我是老十三,一名前端開發工程師。前端工程化就像八戒的釘耙,看似簡單卻能降妖除魔。在本文中,我將帶你探索前端工程化的九大難題,從模塊化組織到CI/CD流程,從代碼規范到自動化測試,揭示這些工具背后的核心原理。無論你是初學者還是資深工程師,這些構建之道都能幫…

Ubuntu 安裝 Keepalived

Keepalived 是什么 Keepalived 是一個用于實現高可用性&#xff08;High Availability, HA&#xff09;的服務&#xff0c;是一款基于 VRRP 協議的高可用軟件&#xff0c;常用于主備切換和虛擬IP漂移&#xff0c;在服務故障時自動實現故障轉移。 Keepalived 的核心功能 功能說…

DHCP理解

文章目錄 DHCP理解DHCP的核心作用DHCP默認端口DHCP的工作原理&#xff08;4個步驟&#xff09;圖示說明&#xff08;含中繼代理&#xff09;DHCP Discover&#xff08;客戶端發現階段&#xff09;DHCP Offer&#xff08;服務器提供階段&#xff09;DHCP Request&#xff08;客戶…

云計算-容器云-部署CICD-jenkins連接gitlab

安裝 Jenkins 將Jenkins部署到default命名空間下。要求完成離線插件的安裝,設置Jenkins的登錄信息和授權策略。 上傳BlueOcean.tar.gz包 [root@k8s-master-node1 ~]#tar -zxvf BlueOcean.tar.gz [root@k8s-master-node1 ~]#cd BlueOcean/images/ vim /etc/docker/daemon.json…

AI 大模型新浪潮:從 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,邁向自動推理的新時代20250507

&#x1f9e0; AI 大模型新浪潮&#xff1a;從 DeepSeek-Prover 到 Qwen3&#xff0c;再到 DeepSeek-R2&#xff0c;邁向自動推理的新時代 &#x1f680; 引言&#xff1a;大模型&#xff0c;不止是語言處理器&#xff0c;而是思維建構者 在 2025 年春天&#xff0c;我們見證了…

觀察者模式(Observer Pattern)詳解

文章目錄 1. 什么是觀察者模式?2. 為什么需要觀察者模式?3. 觀察者模式的核心概念4. 觀察者模式的結構5. 觀察者模式的基本實現簡單的氣象站示例6. 觀察者模式的進階實現推模型 vs 拉模型6.1 推模型(Push Model)6.2 拉模型(Pull Model)7. 觀察者模式的復雜實現7.1 在線商…

前端代碼規范詳細配置

以下是現代前端項目的完整代碼規范配置方案&#xff0c;涵蓋主流技術棧和自動化工具鏈配置&#xff1a; 一、基礎工程配置 1. 項目結構規范 project/ ├── src/ │ ├── assets/ # 靜態資源 │ ├── components/ # 通用組件 │ ├── layouts/ …

Missashe考研日記-day34

Missashe考研日記-day34 1 專業課408 學習時間&#xff1a;3h學習內容&#xff1a; 今天是學習I/O管理第二小節的內容&#xff0c;聽了課也做了題&#xff0c;這是操作系統倒數第二節知識了&#xff0c;還差最后一節就完結了。知識點回顧&#xff1a; 1.I/O核心子系統&#x…

Milvus 向量數據庫詳解與實踐指南

一、Milvus 核心介紹 1. 什么是 Milvus&#xff1f; Milvus 是一款開源、高性能、可擴展的向量數據庫&#xff0c;專門為海量向量數據的存儲、索引和檢索而設計。它支持近似最近鄰搜索&#xff08;ANN&#xff09;&#xff0c;適用于圖像檢索、自然語言處理&#xff08;NLP&am…

算力經濟模型研究:從云計算定價到去中心化算力市場設計

引言&#xff1a;算力商品化的雙重革命 在H800 GPU集群的算力供給能力突破2.3 EFLOPS的今天&#xff0c;算力定價機制正經歷從"資源租賃"到"動態市場"的范式轉變。傳統云計算定價模型&#xff08;如AWS按需實例&#xff09;的靜態價格機制已難以適應大模型…

[D1,2] 貪心刷題

文章目錄 擺動序列最大子數組合買賣股票跳躍游戲跳躍2 擺動序列 不像是貪心&#xff0c;只要抓住擺動這個點&#xff0c;前一個上升&#xff0c;那下一個就要下降&#xff0c;記錄上一次的狀態為1的話&#xff0c;那下一次就要更新為-1&#xff0c;如果上一次為1&#xff0c;這…

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵蓋增刪改查、聚合查詢、索引、事務等核心功能&#xff1a; 一、基礎CRUD操作 1. 環境配置 依賴配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…

【實戰教程】零基礎搭建DeepSeek大模型聊天系統 - Spring Boot+React完整開發指南

&#x1f525; 本文詳細講解如何從零搭建一個完整的DeepSeek AI對話系統&#xff0c;包括Spring Boot后端和React前端&#xff0c;適合AI開發入門者快速上手。即使你是編程萌新&#xff0c;也能輕松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;強推專欄…

Linux系統基本指令和知識指南

一、Linux系統簡介 Linux是一種自由和開放源代碼的類UNIX操作系統&#xff0c;由林納斯托瓦茲在1991年首次發布。它以穩定性、安全性和靈活性著稱&#xff0c;廣泛應用于服務器、嵌入式系統和個人計算機。 Linux主要特點&#xff1a; 開源免費 多用戶、多任務 良好的安全性…

【計算機視覺】OpenCV實戰項目:Long-Exposure:基于深度學習的長時間曝光合成技術

Long-Exposure&#xff1a;基于深度學習的長時間曝光合成技術 項目概述與技術背景項目核心功能技術原理 環境配置與安裝硬件要求建議詳細安裝步驟可選組件安裝 實戰應用指南1. 基礎使用&#xff1a;視頻轉長曝光2. 高級模式&#xff1a;自定義光軌合成3. 批量處理模式 技術實現…

TikTok 矩陣賬號運營實操細節:打造爆款矩陣

在 TikTok 的流量版圖里&#xff0c;打造 TikTok 矩陣賬號能顯著提升影響力與吸粉能力。而借助 AI 工具&#xff0c;更可為 TikTok 矩陣運營效率的提升賦能&#xff0c;讓運營如虎添翼。下面就為大家詳細講講其中的實操細節&#xff0c;并結合一些偽代碼示例輔助理解。 一、矩…

互聯網大廠Java求職面試:分布式系統中向量數據庫與AI應用的融合探索

互聯網大廠Java求職面試&#xff1a;分布式系統中向量數據庫與AI應用的融合探索 面試開場&#xff1a;技術總監與鄭薪苦的“較量” 技術總監&#xff08;以下簡稱T&#xff09;&#xff1a;鄭薪苦先生&#xff0c;請簡單介紹一下你在分布式系統設計方面的經驗。 鄭薪苦&…

【每日八股】學習 RocketMQ Day2:進階(一)

文章目錄 復習昨日內容為什么要使用消息隊列為什么選擇 RocketMQRocketMQ 的優缺點&#xff1f;談談你對 RocketMQ 的理解&#xff1f;消息隊列有哪些類型&#xff1f;RocketMQ 采用哪種消息隊列模型&#xff1f;消息的消費模式了解嗎&#xff1f;了解 RocketMQ 的基本架構嗎&a…

探索智能體開發新邊界:Cangjie Magic開源平臺體驗與解析

文章目錄 每日一句正能量前言一、Cangjie Magic的核心技術&#xff08;一&#xff09;Agent DSL架構&#xff08;二&#xff09;原生支持MCP通信協議&#xff08;三&#xff09;智能規劃功能 二、實際應用場景&#xff08;一&#xff09;智能客服系統&#xff08;二&#xff09…

深入解析進程間通信與Socket原理:從理論到TypeScript實戰

文章目錄 一、進程中如何通信1.1 管道1.1.1 核心特性1.1.2 缺點1.1.3 匿名管道與命名管道的對比 1.2 信號1.2.1 核心特性1.2.2 缺點1.2.3 信號分類對比 1.3 消息隊列1.3.1 核心特性1.3.2 缺點 1.4 共享內存1.4.1 核心特性1.4.2 缺點 1.5 信號量1.5.1 核心特性1.5.2 缺點 二、So…