当前位置: 首页 > news >正文

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.lryc.cn/news/309975.html

相关文章:

  • 第16章-DNS
  • Leetcoder Day27| 贪心算法part01
  • SpringBoot自动配置中bean的加载控制
  • Linux系统运维脚本:根据菜单选择要登录到的Linux主机,方便维护多个linux服务器
  • 蓝桥杯练习题——二分
  • Java面试——Redis
  • 信号系统之复数傅立叶变换
  • Unity - 相机画面为黑白效果
  • 哈啰Java 春招 24届
  • 《剑指 Offer》专项突破版 - 面试题 68 : 查找插入位置/ 69 : 山峰数组的顶部(C++ 实现)
  • 赖迪思软件 lattice Diamond
  • ROS开发基础-Linux基础第四部(开发板设置本地IP)
  • TSINGSEE青犀AI智能分析网关V4智慧油田安全生产监管方案
  • C++基于多设计模式下的同步异步日志系统day3
  • Cypher语句查询neo4j数据库教程
  • 【ESP32 IDF快速入门】点亮第一个LED灯与流水灯
  • 再见,Visual Basic——曾经风靡一时的编程语言
  • 【C++精简版回顾】18.文件操作
  • 【解决方案】ArcGIS Engine二次开发时,运行后出现“正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain...”
  • 新项目,Linux上一键安装MySQL,Redis,Nacos,Minio
  • Rust 从 PyTorch 到 Burn
  • Swin-Transformer网络代码实现
  • Java ZooKeeper-RocketMQ 面试题
  • css制作瀑布流布局
  • Redis 的哨兵模式配置
  • 基于单片机的继电器参数测试系统设计
  • unity 数学 空间四个点是否在同一个平面
  • 数据卷dockerfile
  • AOP的介绍与使用
  • 金融行业专题|期货超融合架构转型与场景探索合集(2023版)