Window下編寫的sh文件在Linux/Docker中無法使用

Window下編寫的sh文件在Linux/Docker中無法使用

  • 一、sh文件目的
    • 1.1 初始狀態
    • 1.2 目的
  • 二、過程與異常
    • 2.1 首先獲取標準ubuntu20.04 - 正常
    • 2.2 啟動ubuntu20.04容器 - 正常
    • 2.3 執行windows下寫的preInstall文件 - 報錯
  • 三、檢查和處理
    • 3.1 評估異常
    • 3.2 處理異常
    • 3.3 調整后運行測試 - 正常
    • 3.4 sh運行完,檢查docker容器 - 完成
  • 四、小結

一、sh文件目的

1.1 初始狀態

已經安裝nvidia-dockerdocker中創建容器測試nvidia-smi正常

1.2 目的

制作Docker鏡像,將Python環境【保存在文件python3_envs.txt中】部署到Docker鏡像中,包括pytorchcuda等環境

二、過程與異常

2.1 首先獲取標準ubuntu20.04 - 正常

sudo nvidia-docker pull ubuntu:20.04

2.2 啟動ubuntu20.04容器 - 正常

>>>sudo nvidia-docker run -it -d --name=demo --gpus=all -v /home/download:/root/download ubuntu:20.04 /bin/bash
55d0ded464ac82cab65befa54ec749fcff61a638ecf57a96f22aae3b95428b64
>>>sudo nvidia-docker attach demo
root@55d0ded464ac:/#

2.3 執行windows下寫的preInstall文件 - 報錯

>>>root@55d0ded464ac:/#./preInstall.shsh preInstall.sh 
: not foundsh: 2: 
E: Invalid operation update

使用vimlinux下編輯preInstall.sh,未能解決問題。

三、檢查和處理

3.1 評估異常

在windows下用notepad++打開preInstall.sh,如下圖,評估可能是因為行尾和linux格式不一致【因為這個是常見問題】
在這里插入圖片描述

3.2 處理異常

用notepad++執行行尾轉換【狀態欄操作,如小圖】,將行尾轉換為正常linux格式
在這里插入圖片描述
在這里插入圖片描述

3.3 調整后運行測試 - 正常

>>>root@55d0ded464ac:/#./preInstall.sh
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Hit:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [3895 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1480 kB]                       Fetched 5489 kB in 9s (625 kB/s)                                                                             Reading package lists... Done
......

3.4 sh運行完,檢查docker容器 - 完成

>>>root@55d0ded464ac:/#python3
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> 

四、小結

linux下運行從其他操作系統編寫的sh文件時,需要檢查文件行尾是否為linux格式


好記性不如爛筆頭。

站在岸上學不會游泳。

眼看千遍,不如手過一遍。


may the odds be ever in your favor ~

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

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

相關文章

WebFlux的探索與實戰 - r2dbc的多表查詢

前言 在一個有數據庫的項目中,條件查詢與多表查詢總是同幽靈般如影隨形。 好久不見朋友們,我是forte。 本篇文章會以我的 個人經驗 來介紹下如何在 Spring WebFlux 中使用 Spring Data R2DBC 進行多表查詢。 這次我會以一個自己寫的項目作為基礎來為各…

[課程]yolov9目標檢測封裝成類調用

搞定系列:yolov9目標檢測封裝成類調用 課程地址:https://edu.csdn.net/course/detail/39352 課程介紹課程目錄討論留言 你將收獲 學會yolov9封裝基本技巧和大體思路 學會yolov9封裝類的API調用技巧和自由擴展 學會使用Pycharm調試技巧和運行腳本技…

「連載」邊緣計算(二十四)03-04:邊緣部分源碼(源碼分析篇)

(接上篇) 在Register()函數中對EdgeHub struct的初始化只是對EdgeHub struct中的controller進行初始化。controller的初始化函數具體如下所示。 KubeEdge/edge/pkg/edgehub/controller.go //NewEdgeHubController creates and returns a EdgeHubContro…

uniapp+vue基于Android的圖書館借閱系統qb4y3-nodejs-php-pyton

uni-app框架:使用Vue.js開發跨平臺應用的前端框架,編寫一套代碼,可編譯到Android、小程序等平臺。 框架支持:springboot/django/php/Ssm/flask/express均支持 前端開發:vue 語言:pythonjavanode.jsphp均支持 運行軟件:idea/eclip…

2023天津公租房網上登記流程圖,注冊到信息填寫

2023年天津市公共租賃住房網上登記流程圖 小編為大家整理了天津市公共租賃住房網上登記流程,從登記到填寫信息。 想要體驗的朋友請看一下。 申請天津公共租賃住房時拒絕申報家庭情況會怎樣? 天津市住房保障家庭在享受住房保障期間,如在應申…

智慧草莓基地:Java與SpringBoot的技術革新

??計算機畢業編程指導師 ??個人介紹:自己非常喜歡研究技術問題!專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目:有源碼或者技術上的問題歡迎在評論區一起討論交流! ?? Java、…

xss.haozi:0x00

0x00沒有什么過濾所以怎么寫都沒有關系有很多解 <script>alert(1)</script>

【Linux取經路】文件系統——inode與軟硬鏈接

文章目錄 一、前言二、認識硬件——磁盤2.1 磁盤的存儲構成2.2 磁盤的邏輯抽象 三、操作系統對磁盤的使用3.1 再來理解創建文件3.2 再來理解刪除文件3.3 再來理解目錄 四、硬鏈接五、軟鏈接六、結語 一、前言 在之前的【Linux取經路】文件系統之被打開的文件——文件描述符的引…

DevStack 基于 Ubuntu 部署 OpenStack

Devstack 簡介 DevStack 是一系列可擴展的腳本&#xff0c;用于基于 git master 的最新版本快速調出完整的 OpenStack 環境。devstack 以交互方式用作開發環境和 OpenStack 項目大部分功能測試的基礎。 devstack 透過執行 stack.sh 腳本&#xff0c;搭建 openstack 環境&…

AcWing 799. 最長連續不重復子序列

Problem: AcWing 799. 最長連續不重復子序列 文章目錄 思路解題方法復雜度Code 思路 這是一個求最長連續不重復子序列的問題。我們可以使用雙指針&#xff08;滑動窗口&#xff09;的方法來解決。我們維護一個窗口&#xff0c;并使用一個數組來記錄窗口內元素的出現次數。當窗口…

深度學習的一個完整過程通常包括以下幾個步驟

深度學習的一個完整過程通常包括以下幾個步驟&#xff1a; 問題定義和數據收集&#xff1a; 定義清晰的問題&#xff0c;明確任務的類型&#xff08;分類、回歸、聚類等&#xff09;以及預期的輸出。收集和整理用于訓練和評估模型的數據集。確保數據集的質量&#xff0c;進行預…

車聯網產品與應用

在中國&#xff0c;先是小鵬汽車官宣“智駕覆蓋城市數量、可用里程以及用戶口碑均為行業第一”。后有華為問界官宣OTA&#xff0c;領航功能全國可用路段高達99%&#xff0c;“全國都能用&#xff0c;哪哪都能開”。 似乎分分鐘&#xff0c;“自動駕駛”就要干成了。但日新月異的…

Day31|貪心算法1

貪心的本質是選擇每一階段的局部最優&#xff0c;從而達到全局最優。 無固定套路&#xff0c;舉不出反例&#xff0c;就可以試試貪心。 一般解題步驟&#xff1a; 1.將問題分解成若干子問題 2.找出適合的貪心策略 3.求解每一個子問題的最優解 4.將局部最優解堆疊成全局最…

【MySQL】深入解析 Buffer Pool 緩沖池

文章目錄 1、前置知識1.1、Buffer Pool介紹1.2、后臺線程1.2.1、Master Thread1.2.2、IO Thread1.2.3、Purge Thread1.2.4、Page Cleaner Thread 1.3、重做日志緩沖池 2、Buffer Pool 組成2.1、數據頁2.2、索引頁2.3、undo頁2.4、插入緩沖2.5、鎖空間2.6、數據字典2.6、自適應哈…

JavaScript之structuredClone現代深拷貝

在JavaScript中&#xff0c;實現深拷貝的方式有很多種&#xff0c;每種方式都有其優點和缺點。今天介紹一種原生JavaScript提供的structuredClone實現深拷貝。 下面列舉一些常見的方式&#xff0c;以及它們的代碼示例和優缺點&#xff1a; 1. 使用JSON.parse(JSON.stringify(…

代碼隨想錄 二叉樹第四周

目錄 617.合并二叉樹 700.二叉搜索樹中的搜索 98.驗證二叉搜索樹 530.二叉搜索樹的最小絕對差 501.二叉搜索樹中的眾樹 236.二叉樹的最近公共祖先 617.合并二叉樹 617. 合并二叉樹 簡單 給你兩棵二叉樹&#xff1a; root1 和 root2 。 想象一下&#xff0c;當你將其…

【Rust】——切片

&#x1f383;個人專欄&#xff1a; &#x1f42c; 算法設計與分析&#xff1a;算法設計與分析_IT閆的博客-CSDN博客 &#x1f433;Java基礎&#xff1a;Java基礎_IT閆的博客-CSDN博客 &#x1f40b;c語言&#xff1a;c語言_IT閆的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

第105講:Mycat垂直分表實戰:從規劃到解決問題的完整指南

文章目錄 1.垂直分表的背景2.垂直分表案例實戰2.1.垂直分表規劃2.2.配置Mycat實現垂直分表2.3.重啟Mycat2.4.在Mycat命令行中導入數據結構2.5.查看由Mycat分表后每個分片上存儲的表2.6.Mycat垂直分表后可能遇到的問題2.7.垂直分表完成 1.垂直分表的背景 我們的商城系統數據庫&…

Unity編輯器下如何獲取物體(GameObject)的中心位置

注意僅能在編輯器下才能使用該方法 實現方式依靠UnityEditor.Tools提供的參數&#xff0c;具體實現如下&#xff1a; 獲取單個物體的中心坐標 public static Vector3 GetGameObjectCenter(GameObject gameObject) {// 選中物體Selection.activeObject gameObject;// 記錄當前…

C#中Byte.Parse的用法,如果需要解析含有數字以外的字符,應該如何使用?

在C#中&#xff0c;Byte.Parse用于將字符串解析為byte類型的數字。它的用法如下&#xff1a; byte result Byte.Parse(str);其中&#xff0c;str是要解析的字符串。 如果要解析的字符串含有數字以外的字符&#xff0c;Byte.Parse會拋出一個FormatException異常。為了處理這種…