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-docker
,docker
中創建容器測試nvidia-smi
正常
1.2 目的
制作Docker
鏡像,將Python
環境【保存在文件python3_envs.txt
中】部署到Docker
鏡像中,包括pytorch
、cuda
等環境
二、過程與異常
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
使用vim
在linux
下編輯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 ~