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.hqwc.cn/news/506553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 frp 实现 windows 远程

前提条件: 拥有一台公网 ip 的服务器; 被远程控制的 windows 系统为专业版(家庭版的其它方式没有尝试过); frp 下载包及使用说明 frp release 包的下载网址:https://github.com/fatedier/frp/releases 中…

浅析this指针

浅析this指针 文章目录 浅析this指针前言this指针作用this指针使用注意事项总结 前言 ​ 在面向对象的编程语言中,this指针是一个自引用指针,通常用于指向对象自身。通过这篇文章,我们将探讨this指针的核心特性、应用场景和相关案例。 this指…

[GYCTF2020]EasyThinking --不会编程的崽

看标题就知道,这大概率是关于thinkphp的题目。先尝试错误目录使其报错查看版本号 thinkphp v6.0.0,在网上搜索一下,这个版本有一个任意文件上传漏洞。参考以下文章。 https://blog.csdn.net/god_zzZ/article/details/104275241 先注册一个账…

基于stm32F103的座面声控台灯

1.基本内容: 设计一个放置在桌面使用的台灯,使用220v交流电供电。具备显示屏能够实时显示日期(年、月、日和星期),时间(小时、分钟、秒)和温度(摄氏度);能够通…

JAVAEE初阶 JVM(二)

垃圾回收和双亲委派模型 1.双亲委派模型2.垃圾回收机制(1) 识别垃圾1.引用计数2.可达性分析 (2) 销毁垃圾1.标记清除2.复制算法3.标记整理 3.分代回收 1.双亲委派模型 描述了如何查找.class文件的策略. 同时JVM中有专门进行类加载的操作,有一个模块,叫做类加载器. 上述就是为了…

云原生架构技术揭秘:DevOps 技术打破开发运维壁垒,实现持续交付的变革之道

DevOps 是一套将软件开发(Development,Dev)和系统运维(Operations,Ops)相结合的实践,旨在缩短应用系统开发生命周期,提供高质量的持续交付。 —— 维基百科 DevOps 0、讲在前面 生…

STM32 HAL I2C使用

1、使用i2c的引脚要设置成开漏输出,以防止烧坏芯片。 2、开漏输出可以将驱动器中的P-MOS失能,只有N-MOS工作。防止如果有两个i2c外设,一个要输出高电平,一个要输出低电平而形成短路状态。 1、驱动oled屏幕 1.1、配置 对照原…

*JAVAWEB--maven*

一:介绍: maven是一种专门管理以及构建JAVA项目的一个工具,maven屹立这么久也是因为其有三个非常好用的功能: 1.提供标准化的项目结构 比方说平时我们编写JAVA项目的时候,如果想把原本在eclipse当中编写的项目导入到IDEA当中进行使用,就会导致报错,因为这两个的项目结构并不一样…

使用最新Hal库实现USART中断收发功能(STM32F4xx)

目录 概述 1 认识STM32F4XX的USART 1.1 USART 功能说明 1.2 USART的中断 1.3 USART 模式配置 1.4 USART的寄存器 2 使用STM32CubeMX 生成工程 2.1 配置参数 2.2 生成工程代码 3 实现软件功能 3.1 软件功能介绍 3.2 认识USART Hal库 3.2.1 初始化函数组 3.2.2 发送…

解决:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8

解决:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8 先点击 Project Structure 查看jdk是否为1.8版本 我这jdk版本为1.8版本的,但还是运行还是报错 据以上错误显示以及上述配置,我选择的编译器是jdk1.8的,但是在i…

【Java基础系列】时间戳

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Yapi部署

【GO开发工程师】Yapi部署 推荐个人主页:席万里的个人空间 文章目录 【GO开发工程师】Yapi部署1、Yapi部署 1、Yapi部署 初始化yapi: git clone https://github.com/Ryan-Miao/docker-yapi.git cd docker-yapi docker-compose upyapi启动失败 1.cd进入…