Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux下shell不能正常执行

Linux下shell不能正常执行

作者头像
小码匠
发布于 2022-06-16 10:00:30
发布于 2022-06-16 10:00:30
4.4K00
代码可运行
举报
运行总次数:0
代码可运行

标签

  • Linux、Shell

操作

  • Linux下编写deploy.sh文件,内容是用docker部署微服务
  • 执行脚本:出错,错误信息如下

错误信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@coder-oldgeek]# sh deploy.sh 
No such command: stop

Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show version information and quit
^CRemoves stopped service containers.

问题定位

查看文件内容

查看: sh文件内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat deploy.sh
  • 文件内容 #!/bin/bash docker-compose stop docker-compose rm -f docker rmi oldgeek-springcloud-examples docker build -t oldgeek-springcloud-examples . docker-compose up -d docker-compose ps

看sh内容,没啥问题

分析问题

  • 经验分析:这种多半是因为文本编码导致

定位问题

查看文件信息:file命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@coder-oldgeek]# file deploy.sh 
deploy.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators

看上面信息【with CRLF line terminators】,大概能定位到问题

  • windows下的文本:默认换行符是,称为CR与LF两个符号(\r\n);

【注意点】在windows下编辑的shell脚本只看文件内容是没问题,但一旦到linux下可能就运行挂了

解决问题

查找换行符号:find命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find . -type f -name '*.sh' | xargs file |grep CRLF

替换换行符号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find . -name '*.sh' | xargs -I {} perl -pi -e 's/\r//g' {}

查看有问题文件是否去掉DOS格式下换行符号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@coder-oldgeek]# file deploy.sh 
deploy.sh: Bourne-Again shell script, ASCII text executable
  • 发现:with CRLF line terminators已经消失了

继续执行脚本deploy.sh,一切正常

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker Registry16
Compose软件基础信息 [root@docker ~]# ls anaconda-ks.cfg auth certs data docker-compose-Linux-x86_64 dockerfile [root@docker ~]# du -sh docker-compose-Linux-x86_64 7.6M docker-compose-Linux-x86_64 [root@docker ~]# file docker-compose-Linux-x86_64 docker-co
franket
2022/01/21
2520
AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效
由于近两年云原生热,大家对docker、docker compose及k8s或多或少都有一些涉猎,即便没有实际应用肯定也耳熟能详,今天对docker及docker compose的命令集进行梳理,大家可以收藏以便之后快速查阅。
LDG_AGI
2024/08/13
2330
Docker Curriculum
Learn to build and deploy your distributed applications easily to the cloud with Docker.
Cellinlab
2023/05/17
1920
Docker Curriculum
Docker Cheatsheet
# Images # build image from a Dockerfile docker build -t <image-name> . # build image from a Dockerfile without cache docker build --no-cache -t <image-name> . # list local images docker images # delete local image docker rmi <image-name> # delete all
Cellinlab
2023/05/17
1470
笔记:Docker命令自动补全
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
耕耘实录
2019/09/18
5.1K0
docker学习(7) docker-compose使用示例
上一回学习了如何利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦。为了能更高效的批量创建容器,docker推出了docker-compose工具,只需要定义一个docker-compose.yml文件即可快速搞定一组容器的创建,仍然以上一回的例子演示: mysql: image: daocloud.io/yjmyzz/mysql-osx:latest volumes:
菩提树下的杨过
2018/01/18
8060
容器技术|Docker三剑客之Compose
docker技术是基于Linux内核的cgroup技术实现的,那么问题来了,在非Linux平台上是否就不能使用docker技术了呢?答案是可以的,不过显然需要借助虚拟机去模拟出Linux环境来。 docker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实现原理(一般是virtualbox)。
民工哥
2020/09/16
7790
容器技术|Docker三剑客之Compose
docker三剑客docker-compose、docker-machine、swarm
安装composecurl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-(uname -s)-(uname -m) -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose测试安装
菲宇
2022/12/21
4270
DevOps整合Jenkins+k8s+CICD
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。 那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。 DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。 然字面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。 网上可以查看到DevOps的符号类似于一个无穷大的符号
IT运维技术圈
2022/10/24
2.9K1
docker微服务初体验
在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、单个服务的设计。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
若与
2018/06/02
2.4K0
docker微服务初体验
第二章 Docker编排工具
docker machine是一个便于在多平台上部署Docker的一个工具;多平台比如:
公众号: 云原生生态圈
2021/11/15
4030
Docker 启动容器实例报错:UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeou...
https://github.com/docker/compose/issues/3927
一个会写诗的程序员
2022/09/19
1.6K0
Docker 启动容器实例报错:UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeou...
天才第一步 Docker 纸尿裤
Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Table of Contents 1. 应用场景 2. 优点 3. 下载和安装 3.1. Docker for Mac 3.2. Docker fo
双鬼带单
2018/03/29
8690
天才第一步 Docker 纸尿裤
利用Docker Compose快速搭建本地测试环境
Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用。然后用一个简单命令就能启动所有的服务。Compose编排Docker服务的优势是在单机测试场景,因为Compose的安装简单,开箱即用,yaml的定义也复用了Dockerfile的语法。但是集群中容器编排服务还是推荐K8S或者Mesos+Marathon这样的编排调度系统。
用户2937493
2019/09/11
1.3K0
利用Docker Compose快速搭建本地测试环境
Docker折腾记: (2)基于docker-compose构建yapi容器
这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处
CRPER
2018/08/28
1.4K0
Docker折腾记: (2)基于docker-compose构建yapi容器
Unix\Linux 执行 shell 报错:“$'\r': 未找到命令” 的解决办法
大多数原因是因为 shell 脚本是在 Windows 编写导致的换行问题,具体原因是 Windows 的换行符号为 CRLF(\r\n),而 Unix\Linux 为 LF(\n)。
叨叨软件测试
2021/06/16
4.8K0
Unix\Linux 执行 shell 报错:“$'\r': 未找到命令” 的解决办法
Docker三剑客
本文主要介绍了Docker Swarm是Docker容器的集群管理和编排工具,它能够管理和协调多个Docker容器实例,并确保应用程序的可用性和可靠性。Docker Swarm支持水平扩展和自动负载均衡,并提供了声明式编排,使得用户可以轻松管理和维护多个Docker容器。它还提供了基于Docker的轻量级虚拟机,用于部署、扩展和管理容器。在本文中,我们首先介绍了Docker Swarm的基本概念和架构,然后详细讲解了Docker Swarm的常用命令和操作,包括创建、启动、停止、滚动更新和监控等。最后,我们提供了一些实践案例,以帮助读者更好地理解和应用Docker Swarm。
shaonbean
2018/01/02
3.3K3
Docker三剑客
附003.Docker Compose命令详解
-f参数为可选,也可使用-f提供多个配置文件,当使用多个文件时,Compose会将它们合并为一个配置。Compose按照提供文件的顺序构建配置。后续文件覆盖并添加到其前任文件中。
木二
2019/07/26
2.3K0
066. Docker Compose 集成式应用组合
1. Compose 简介 ---- Compose 项目是 Docker 官方的一个开源项目,负责实现对 Docker 容器集群的快速编排。代码位置:https://github.com/docker/compose。 Compose 定位是”定义和运行多个 Docker 容器的应用“,其前身是开源项目 Fig。 Compose 允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目(project)。 Compose 下两个重要的概念: 服务(
山海散人
2021/03/03
9530
Docker重学系列之Docker Compose
这样挨个启动容器,是不是很烦人,能不能写个脚本,按照依赖顺序依次启动相应容器呢?
大忽悠爱学习
2022/05/10
1.7K0
Docker重学系列之Docker Compose
相关推荐
Docker Registry16
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验