Window下编写的sh文件在Linux/Docker中无法使用

news2024/9/23 17:25:34

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.sh
 sh 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.coloradmin.cn/o/1488303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不知道RAID/SAN/NAS的小可爱来看看这个吧!

RAID RAID(冗余阵列的独立磁盘,Redundant Array of Independent Disks)是一种将多个磁盘驱动器组合成一个或多个单元的技术,目的是在提高数据可靠性和/或提升性能的同时,对操作系统隐藏底层的复杂性。简而言之&#x…

Vue3中Vuex状态管理库学习笔记

1.什么是状态管理 在开发中,我们会的应用程序需要处理各种各样的数据,这些数据需要保存在我们应用程序的某个位置,对于这些数据的管理我们就称之为状态管理。 在之前我们如何管理自己的状态呢? 在Vue开发中,我们使用…

“比特币暴拉冲破6.5万美元”!超罕见指标揭示牛市信号,18万美元目标能否实现?

比特币(BTC)周末持续在6.2万美元反复震荡之后,今(4)晨再次强势拉涨,早上8:45左右最高触及64268美元,随后插针盘整,下午5点30分左右突破65500美元,再创今年新高…

第七届电路,系统与仿真国际会议(ICCSS 2024)即将召开!

2024年第七届电路,系统与仿真国际会议(ICCSS 2024)将于5月17-19日马来西亚博特拉大学举办。本届会议由马来西亚博特拉大学和中国东南大学协办,电机与电子工程系主办。ICCSS 2024 热烈欢迎所有来自电路、系统和仿真等相关领域的研究…

Java基于springboot的课程作业管理系统

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景,运用软件工程原理和开发方法…

书生浦语全链路开源体系

推荐阅读论文 A Survey Of Large Language Models 书生浦语开源的模型 从模型到应用 书生浦语开源体系 书生万卷开源数据集 除此之外还有OpenDataLab国内数据集下载网站。 预训练框架InterLM-Train 微调框架XTuner 评测工具体系 国内外常见的大语言模型评测基准&#xff1a…

如何扫码查看图片信息?图片放到二维码展示的在线教学

现在通过扫码来查看物品图片是很常用的一种方式,将物品不同角度的图片存入一张二维码后,用户只需要扫描这张二维码图片,就可以了解物品预览图及其他信息。常用的图片格式比如jpg、png、gif都可以放到二维码中显示,那么具体该怎么做…

如何在飞书接入ChatGPT并结合内网穿透实现公网远程访问智能AI助手

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

column ‘_id‘ does not exist

最近把 csv 导入 SQLite 给 CursorAdapter 使用出现了这个莫名其妙的错误。 java.lang.IllegalArgumentException: column _id does not exist-CSDN博客 查找资料才明白:CursorAdapter 使用的数据库中必须有 _id 这个字段。 好吧,导入的数据库增加 _i…

为何代理IP的稳定性不如有线IP?

代理IP与网线IP的稳定性之间存在差异的原因在于它们的工作机制和服务环境的不同。以下是代理IP不如网线IP稳定的一些主要原因: 1. 服务提供商的质量: - 动态分配:代理IP通常是动态分配的,这意味着每次请求或每隔一段时间&#xff…

2.00001《Postgresql内幕探索》走读 之 查询优化

文章目录 1.1 概述1.1.1 Parser1.1.2 分析仪/分析器1.1.3 Rewriter1.1.4 Planner和Executer 1.2 单表查询的成本估算1.2.1 顺序扫描1.2.2 索引扫描1.2.3 排序 1.3 .创建单表查询的计划树1.3.1 预处理1.3.2 获取最便宜的访问路径示例1示例二 1.3.3 创建计划树示例1例二 1.4 EXEC…

python学习27

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

Redis安装与数据类型及常用命令

一、关系数据库和非关系型数据库1、关系型数据库2、非关系型数据库3、非关系型数据库产生背景4、关系型数据库和非关系型数据库区别5、为什么非关系型数据库能提升访问速度? 二、Redis简介1、Redis 的优点2、使用场景3、哪些数据适合放入缓存中?4、Redis…

芯片ERP:应用广泛的领域及其影响

在现代科技快速发展的时代,芯片ERP(企业资源规划)已成为许多行业不可或缺的工具。这种集成了先进技术和先进管理理念的系统,极大地提高了企业的运营效率和竞争力。那么,芯片ERP主要应用在哪些领域呢?本文将为您一一揭晓。 一、电子制造行业 …

啤酒:精酿啤酒与烤串的夜晚滋味

夏日的夜晚,微风拂面,星光璀璨。此时,能抚慰人心的莫过于与三五好友围坐一起,享受烤串与Fendi Club啤酒的美味。这种滋味,不仅仅是味蕾的盛宴,更是心灵的满足。 Fendi Club啤酒,每一滴都蕴含着大…

python标识符、变量和常量

一、保留字与标识符 1.1保留字 保留字是指python中被赋予特定意义的单词,在开发程序时,不可以把这些保留字作为变量、函数、类、模块和其它对象的名称来使用。 比如:and、as、def、if、import、class、finally、with等 查询这些关键字的方…

指针习题二

使用函数指针实现转移表 #include <stdio.h> int add(int a, int b) {return a b; } int sub(int a, int b) {return a - b; } int mul(int a, int b) {return a * b; } int div(int a, int b) {return a / b; } int main() {int x, y;int input 1;int ret 0;int(*p[…

SwiftUI 如何在运行时从底层动态获取任何 NSObject 对象实例

概览 众所周知,SwiftUI 的推出极大地方便了我们这些秃头码农们搭建 App 界面。不过,有时我们仍然需要和底层的 UIKit 对象打交道。比如:用 SwiftUI 未暴露出对象的接口改变视图的行为或外观。 从上图可以看到,我们 SwiftUI 代码并没有设置视图的背景色,那么它是怎么变成绿…

pydub、playsound播放声音;gradio、streamlit页面播放声音;gradio 页面图像、视频及调用摄像头

1、pydub from pydub import AudioSegment from pydub.playback import playsong AudioSegment.from_wav(r"C:\Users\loong\Downloads\zh.wav") play(song)2、playsound from playsound import playsoundplaysound(r"voice.wav")3、streamlit import s…

Docker创建Reids容器

1.默认拉取Redis最新镜像版本 docker pull redis 2.下载redis配置文件 https://download.redis.io/releases/ 3.下载配置文件后手动更改密码&#xff0c;链接时间等信息 绑定地址&#xff08;bind&#xff09;&#xff1a;默认情况下&#xff0c;Redis 只会监听 localhost…