Linux命令 dos2unix 的实际应用场景

问题描述:书接上文springboot之停止与启动服务的脚本,编写杀死服务脚本的时候,总是不行,Linux会提示你类似下面这样的信息:

killed pid: 
: arguments must be process or job IDs

思考:我再次仔细审查我的脚本命令

path=/opt/project/demo/demo-0.0.1-SNAPSHOT.jar
pid=`ps -ef|grep $path|grep -v grep|awk '{print $2}'`
echo "killed pid: "$pid
kill -9 $pid

逐行执行,你会发现一点毛病没有。于是猜测可能和换行符有关,windows 和 linux 下换行符不相同。

linux:\n

windows:\r\n

解决方案:最近看了些 Linux 书籍,发现可以通过 dos2unix 命令进行格式转换。

语法:dos2unix [kn] file [newfile]

执行以下命令

dos2unix -k -n kill.sh stop.sh 

转换完成显示类似下面的信息

dos2unix: converting file kill.sh to file stop.sh in Unix format ...

参数解释:

-k :保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修改的时间)

-n:保留原本的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new

然后我直接执行 sh stop.sh,没有错误信息,直接杀死服务。就是这么神奇!

总结

  1. 我们在 windows 下编写的脚本,在 linux 下使用,一定要注意格式必须为 unix
  2. 在 linux 下编写的脚本,可以直接使用
  3. dos2unix 可以将 dos 文本文件转换为 unix 文本文件
posted @ 2020-04-12 16:53  crazy-zz5536  阅读(419)  评论(0编辑  收藏  举报