.xxx.sh脚本无法启动,原来都是特殊字符搞的鬼?
今天遇到个趣的问题,linux上springboot启动,连接达梦数据库报错。
解决思路:
1)是不是数据库本身有问题,客户端登录没问题。
2)排查是不是war包问题,本地连接数据库,没问题。
3)是不是启动参数有问题?因为多数据源的关系,在启动参数里配置了数据源跟驱动名
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVER
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriver
检查了下,没任何问题。
4)是不是有特殊字符?
用vi -b start.sh查看了启动脚本,并未发现^M这样的特殊字符。
划重点,这个也是经常出现的特殊字符导致脚本无法启动的元凶之一。
5)去除启动参数,将启动参数写死放到application.properties中,重新打包,上传上去,./start.sh,启动竟然不报错了。
6)回头再检查这两行参数,将参数逐行删除,再手动打上去,定位到参数行
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriver
将DmDriver 后的空格删除,再重新手动打个空格,:wq保存,重启启动,成功。
7)为什么?中午吃饭去了,下午回来再看。路上怀疑是隐藏字符。
8)下午回来,按照隐藏字符的思路去百度了下,看还有什么方法可以查看linux上的隐藏字符。找到了个命令,cat -A。
cat -A start.sh
发现信息如下
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVERM-BM- $
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriverM-BM- $
多了M-BM-这串特殊字符,真相大白。
9)M-BM-是什么特殊字符?哪位大神能告诉我下?我关键字只搜索到了BM算法,这是一个查找替换算法,另外还搜到了个帖子,说放在oneNote里再贴出来也出现这个问题。所以猜测是运维人员在windows上批量替换数据库参数导致。
10)在window上编辑sh脚本的时候,上传到linux上最好vi -b、cat -A先看下是不是弄了些特殊字符出来。
.xxx.sh脚本无法启动,原来都是特殊字符搞的鬼?的更多相关文章
- sh - 脚本学习 启动/停止/重启/部署jetty crontab
===============jettytest.sh ====================== #!/bin/shjettysh_path=/usr/local/jetty/bin/jetty. ...
- 执行xxx.sh脚本的两种方式
因公司测试环境的登录模式有2种,大佬们直接写了个脚本完成一键切换,看了其中的脚本文件,其中出现了send "sh out.sh\r":一直疑惑这里的sh out.sh的意思...查 ...
- ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas
? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...
- CentOS 升级 openSSH+ sh脚本自动运维
升级前后对比 openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: OpenSSH 远程代码执行漏洞(CVE-2016-10009) OpenSSH au ...
- root.sh脚本支持checkpoints文件实现重复运行
安装集群GRID/GI一般包括三个过程:首先,运行OUI/RunInstaller输入集群配置信息,其次,拷贝/编译集群文件,最后,以root用户运行root.sh脚本配置集群/启动集群,其中运行ro ...
- 数据仓库005 - 复习Linux shell命令 - crontab调度 sh脚本 后台执行 软连接
一.crontab调度 对于linux 自带crontab而言, xxx.sh的一般编写格式以#!/bin/bash 解释器开头,可在脚本中加入: date 但是,shell脚本执行 需要 ...
- 服务器sh脚本自动登录(mac)
一不小心自己也有三台虚拟机了,每次都ssh -username@ip 然后在输入密码着实蛋疼,第一反应时脚本登录,但是作为脚本是逐行执行命令,是无法做到等待一个密码提示出现在输入密码的.查到mac下可 ...
- linux执行sh脚本文件命令
linux执行sh脚本文件命令 很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本 ...
- sh脚本执行Java程序
1.不引用Jar包或者资源文件夹 最简单的程序Hello World. 首先创建Hello.java public class Hello { public static void main(Stri ...
随机推荐
- 十年后,我又开始研究SEO了
2009年的时候,我就小打小闹式地要创业了,其实就是和同学在北京阜成门开了一家特产店.但我们的想法不止在这个店,有更大的目标,目前也不便在这里展开了.反正当时我就注意到了SEO,即搜索引擎优化.通俗地 ...
- Java并发框架:Executor
介绍 随着当今处理器中可用的核心数量的增加, 随着对实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行. Java 提供了自己的多线程框架,称为 Executor 框架. 1. Execut ...
- 使用SpringSecurity搭建授权认证服务(1) -- 基本demo认证原理
使用SpringSecurity搭建授权认证服务(1) -- 基本demo 登录认证是做后台开发的最基本的能力,初学就知道一个interceptor或者filter拦截所有请求,然后判断参数是否合理, ...
- VirtualBox中安装CentOS使得在ssh和外网都能正常链接
一.网卡模式选择 网卡1:Host-only 用于主宿机互访,这是主宿机通过192.168.56.X这一网络通信,主机是否能上网不影响双方通信 网卡2:NAT 宿机用这一网卡通过主机上网 二.具体配置 ...
- 你确定你会写 Dockerfile 吗?
如今 GitHub 仓库中已经包含了成千上万的 Dockerfile,但并不是所有的 Dockerfile 都是高效的.本文将从五个方面来介绍 Dockerfile 的最佳实践,以此来帮助大家编写更优 ...
- java word转html 报错 org/apache/poi/xwpf/usermodel/IRunBody
最终解决的办法是修改jar包版本,一定要对应上. <dependency> <groupId>org.apache.poi</groupId> <artifa ...
- java中String和int相互转换常用方法详解
java中int和String的相互转换常用的几种方法: String > int s="10";int i;第一种方法:i=Integer.parseInt(s);//默 ...
- .Net Core Api 授权认证
一.所使用到的NuGet: 1. System.IdentityModel.Tokens.Jwt 2. Microsoft.AspNetCore.Authentication.JwtBearer 二. ...
- shell的用处到底大不大
我曾在智联招聘等网站上搜寻有关shell脚本员的职位,与C++.JAVA等热门语言相比,冷清很多.看上去似乎招shell程序员的公司比较少.是不是公司不重视或者是很少用到shell这个东东呢? ...
- 微信小程序之楼层效果
今天做了一个小程序实现一个楼层效果 带大家分享下经验和api的使用吧 如图 将左边和右边各分了一个组件 目录如下 其中list页面是这个楼层效果的页面 components是组成这个页面的两个组件 ...