一、执行程序报未找到命令或者syntax error:....
问题现象:
在windows上编辑后的程序通过shell工具上传到linux服务器,很多情况下直接执行会报错:
排查思路:
使用vi或者vim打开程序文件,显示文件格式为dos:
问题原因:
linux上只能执行unxi格式的程序,因为linux和unix的回车输入的时换行,而win/dos上回车输入的时换行及回车,如果将dos格式的程序在linux上执行的时候就会报错找不到命令或者报格式错误。
解决办法:
1、单个程序:
① 使用vi/vim编辑程序文件:
② 编辑器中“shifit+:” 进入命令模式,输入 set ff=unix回车修改文件格式为unix
③ 修改完成后,使用set ff查看当前文件格式
④ 文件格式提示为unix则表示修改成功,然后记得wq保存,如果没有保存会导致修改失败
2、 多个程序或者文件以及子目录下的程序和文件:
程序和文件很多或者一个项目的情况,如果单独去修改每一个文件会耗费大量时间,这个时候需要用到linux上的工具dos2unix来批量转换。dos2unix需要通过yum安装,默认是不带这个命令的:
① 执行 yum -y install dos2unix
② vi/vim 新建一个sh脚本文件,复制下面的内容并wq 保存,find 后面的路径是当前目录,可以修改为自己程序所在目录:
#!/bin/bash
find ./ -type f \( -not -name "*.rpm" -a -not -name "*.zip" -a -not -name "*.tar" -a -not -name "*.tar.gz" \) -exec dos2unix {} +
③ sh执行一下脚本,即可批量将当期目录下的dos格式文件/程序修改为unix
二、 另外一种未找到命令的情况
问题现象:
问题原因:
这种情况是对应的命令没有安装导致未找到命令,不是格式问题。
解决办法:
执行yum安装对应的命令就可以了
yum -y install 对应命令
如果提示没有找到对应的包,先使用yum provides 对应命令 ,查找提供命令的包名,再执行yum -y install 查找出来的包名。