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,没有错误信息,直接杀死服务。就是这么神奇!
总结:
- 我们在 windows 下编写的脚本,在 linux 下使用,一定要注意格式必须为 unix
- 在 linux 下编写的脚本,可以直接使用
- dos2unix 可以将 dos 文本文件转换为 unix 文本文件
作者:努力为明天
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!