错误: /bin/bash^M: bad interpreter: 没有那个文件或目录 解决方案: 运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容...具体细节不管,如果验证: vim test.sh:set ff?如果出现fileforma=dos那么就基本可以确定是这个问题了.:set fileformat=unix:wq!…
今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式的描述:“Dos\Windows或UNIX或Mac”. 2.文件转换方法 但是如果每写一个shell文件都需要这样转换可能会很麻烦,那有没有一劳永逸的办法呢?答案是有的,我们可以设置Notepad++默认新建的文件都是shell格式,具体操作如下: 打开在notepad++,设置,首选项 注意点:…
首先,你写的shell脚本必须是正确的, 其次,无法运行的原因:因为windows下的换行是两个字节,而你上传到linux,linux下换行是两个字节,所以编译的酒不正确的,导致无法 运行脚本, 这种情况怎么办呢? 两种解决方法, 1.直接在linux环境,用vi来编写 2.上传上去的脚本要进行一下转换, dos2unix  --->  是把windows格式的文本转换成linux下格式 unix2dos  --->是把linux下文本格式转换成windows下的文本格式…
是因为格式不对 可用vim编辑器转换格式 在vim中执行命令: set ff=unix 设置打开方式为unix…
查看脚本文件是dos格式还是unix格式的几种办法.(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$:(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式:(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix. 解决办法::set…
在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录.shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter.网上找了资料才知道如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A.如果你将这个脚本文件直接放到Li…
注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not found : command not found: 'tartup.sh: line 19: syntax error near unexpected token `in 'tartup.sh: line 19: `case `uname` in 复制代码 这是因为在windows下编写的脚本文件,放到L…
shell脚本兼容linux/unix与windows/cygwin的基础 :统一文本格式为:unix文本格式,即于LF为换行符(推荐方案) 在notepad上设置:编辑->档案格式转换->转换为UNIX格式 另外我觉得在自己使用的编辑器上显示回车.换行符也许是个好的习惯吧   有关于回车,换行的故事:转送门在这里,猛击吧!http://blog.sciencenet.cn/blog-948919-697160.html   关于回车换行问题,我的”痛苦“经历(传递的字符串参数有\r字符)  …
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与print效果相同") 在 Terminal 结尾反斜杠,当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用. 2.区别 "命令输出" 与 "命令引用" 以及 POSIX(可移植操作系统接口) sh -c &qu…
linux系统下重启tomcat的shell脚本: #!/bin/shtomcat_home=/opt/apache-tomcat- #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work…
将一个jar包放到linux下定时执行 1.在dbtodb文件夹下新建一个dbtodb.sh,脚本内容为: #!/bin/bash cd /usr/dbtodb/ java -jar dbtodb.jar 2.将dbtodb文件夹放到linux服务器上的usr/目录下 3.对dbtodb.sh赋权限,具体操作如下: [root@bidev /]# cd /usr/dbtodb [root@bidev dbtodb]# chmod 777 dbtodb.sh 4.由于Windows于linux编码…
今天在windows下使用notepad++写了个python脚本,传到linux服务器执行后提示:-bash: ./logger.py: usr/bin/python^M: bad interpreter: No such file or directory 1.原因分析 这是不同系统编码格式引起的:在windows系统中编辑的logger.py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息.一般是因为windows行结尾和linux行结尾标识不同造成的,在window中行结…
通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c  或 -s 比如: # su - oracle -c "pwd"/home/oracle 或 su - oracle -s /bin/sh test.sh 此时执行的test.sh中相关命令要在bin/sh下,换句话说,bin/sh支持的命令才能执行. 当然我们可以将结果重定向到其他的文…
初衷 windows下有自解压文件,直接双击就能释放文件,并且还能执行释放文件前后要执行的脚本.Linux下我也想要这样的功能,因为我希望直接拷贝一个shell脚本给别人,别人直接运行就能用,而不是一个压缩文件,需要别人解压. 实现 #!/bin/bash # write header cat > attachment.sh <<EOF #!/bin/bash base64 -d > attachment_test <<EOF EOF # write attachmen…
Shell脚本对Linux进行文件校验 一.需求 有客户等保需求对文件一致性进行校验,想到利用md5sum工具,因此写脚本来对文件进行自定义扫描,后期可以利用其进行校验,快速校验文件发现变更的文件,一定程度及时发现等行为. 二.脚本 利用md5sum将扫描得到的文件保存在/tmp目录下,后缀为时间戳,后期可以利用此文件进行校验 #!/bin/bash #func:scan file #md5sum -c $SCAN_FILE SCAN_DIR=`echo $PATH |sed 's/:/ /g'…
shell脚本在linux中应用广泛,之前一直选用python写脚本来进行一些文件操作,但是最后发现shell脚本非常方便,所以特意来学习下皮毛,便于提高自己效率 定义变量 1 country="China" 2 Number=100 3 4 ##注意 5 ##变量名和等号之间不能有空格 6 7 ##若有调用变量,则加$即可,可perl一样 8 9 ## 输出 country, 用echo即可 10 echo $country 字符串 1 ## 单引号 2 # 单引号里的任何字符都会原…
本文介绍了计算linux网卡流量的一个shell脚本,一个通过固定间隔时间获取ifconfig eth0 的字节值而计算出网卡流量的方法,有需要的朋友参考下. 使用shell脚本计算Linux网卡流量,方法中最关键点: ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}' 通过ifconfig  eth0|grep bytes 得到输入输出的流量. /@rac2=>dd2$ifconfig eth0|…
Shell脚本查看linux系统性能瓶颈(转自:http://blog.51cto.com/lizhenliang/1687612) [root@test ~]# cat show_sys_info.sh #!/bin/bash # os_check() { if [ -e /etc/redhat-release ]; then REDHAT=`cat /etc/redhat-release |cut -d' ' -f1` else DEBIAN=`cat /etc/issue |cut -d'…
假设现有一篇待执行的python脚本test.py python脚本在linux下面执行有两种方式: 打开Linux终端,输入 python test.py 在test.py脚本第一行添加声明 #!/usr/bin/python 这是指定python脚本的解释器,然后给test.py添加可执行权限并执行 chmod +x test.py ./test.py 第一行时给test.py添加可执行权限,第二行执行该脚本.(./)的含义是本目录下…
在学习shell中测试case参数命令代码如下 #!/bin/bash #switch测试 case $1 in     start)         echo 'start'     ;;     stop)         echo 'stop'     ;; esac 在给当前shell脚本赋予了执行权限之后,执行报错代码如下 [root@localhost sh]# ./switch.sh stop -bash: ./switch.sh: /bin/bash^M: bad interpr…
今天遇到一个很诡异的问题,一直运行很正常的shell脚本失败了,只是昨天增加了一个参数而已. 报错信息: /bin/bash^M: bad interpreter: No such file or directory 后来发现root cause, 昨天修改文件的时候在windows中修改保存,然后上传的. 文件被识别成dos格式. 在此的命令模式下使用以下命令可以查看: : set ff 返回结果:  fileformat=dos 修改文件格式为Unix,使用下面的命令: :set ff=un…
当我们把文件从windows系统中编辑的文件拷贝到linux系统中,如果我们执行文件会保存如下的错: shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory 1.在命令模式中使用set ff命令查看文件格式 :set ff 可以看到文件的格式为dos: fileformat=dos 2.通过命令行修改文件格式 :set ff=unix 执行完命令后再次通过set ff命令查看文件格式,可以看到文件…
执行python脚本,提示错误: /usr/bin/python^M: 解释器错误: 没有那个文件或目录. 产生错误原因: \r字符被显示为^M,这时候只需要删除这个字符就可以了. Linux环境下: (1)先要确保文件有可执行权限,执行命令: chmod 777 filename (2)打开文件: vim filename 注意:(全部操作都是在vim编辑器的命令模式下,不进入编辑模式) (3)查看格式.利用如下命令查看文件格式: :set fileformat 或 :set ff (4)格式…
shell 执行报错: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory 原因:window和linux 的文件格式不同,这个问题是:linux换行只需要 /n windows的换行是 /r/n 导致文件不能识别. vim 查看文件格式: set ff? fileformat=dos 就是window 的文件格式 修改: set fileformat=unix 搞定…
我们在实际项目中或许会遇到php调用shell脚本的需求.下面就用简单案例在Centos环境下实践 准备 查看php.ini中配置是否打开安全模式 //php.ini safe_mode = //这个如果为off下面两个就不用管了.我用的是php7,默认没有当前配置项 disable_functions = safe_mode_exec_dir= 因为safe_mode配置项默认没有,那么我修改了php.ini中的disable_function选项,把其中一个被禁用的函数去掉,去掉[passt…
概述: 此脚本实现了在Centeros 6版本下自动安装mysql5.7到目录 /opt/mysql-5.7*并且做软连接映射到 /usr/local/mysql,自动修改root密码为:12345678,开启root远程访问账户,此脚本yum源搭建部分请参考:Centeros 下自动区分release,连接到远程FTP yum源 讨论: 刚开始接触shell,感觉很不规范,没有进行模块区分,没有设置动态变量如密码,用户,安装目录,日志目录等等,后边会完善 脚本原文: #!/bin/bashrp…
结论:win记事本使用的格式有别于linux,二者不可混用.linux使用一个叫vi的编辑器. 解决办法:使用vi命令建立文件,在其中敲shell.命令:vi  > filename   (敲完用ctrl +c 就可以保存) . 验证命令:sh  filename 具体分析(你可以忽略): win是microsoft专业的系统,在设计之初就使用了固定的编码格式,比如用/n表示换行:使用记事本的 好处在在于可以没有任何的附加格式,原生态,这样就具有了通用性,其实关键点就在于系统的差异. linux…
一.如何debug 1.通过sh命令的参数: sh [-nvx] scripts.sh 选项与参数: -n :不要执行 script,仅查询语法的问题: -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上: -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数! 示例1:no news is good news [root@localhost tmp]# sh -n add1_100.sh [root@localhost tmp]# 示例2: [root…
一.循环 1.不定循环 有两种形式: while [ condition ] <==中括号内的状态就是判断式 do <==do 是循环的开始! 程序段落 done <==done 是循环的结束 当 condition 条件成立时,就进行循环,直   到 condition 的条件不成立才停止 until [ condition ] do 程序段落 done 当 condition 条件成立时,就终止循环, 否则就持续 进行循环的程序段. 示例 #!/bin/bash #描述:循环练习1…
  #! /bin/bash echo -e "开始安装redis服务\n" download_url=http://download.redis.io/releases/redis-4.0.2.tar.gz file_name=${download_url##*/} file_dir=${file_name%.tar.gz*} cd /usr/local/src if [ ! -f "/usr/local/src/${file_name}" ];then echo…