Linux执行 .sh 脚本报错

一、问题背景

  今天在学习hadopp框架时,编写一个hadoop启动进程的sheel脚本,由于不想使用Linux自带的VM编辑器,就在Windows下编辑脚本的内容,然后在Linux下运行此脚本,接着就报了几个错误

  报错原文:

Could not find or load main class namenode

Could not find or load main class datanode

  大致意思是说,他找不到我的那几个节点。

  一开始,我以为是我的hadoop配置文件写的有问题,但经过一番检查,和百度之后,都没有解决我的问题,运行脚本还是会出错。这我就想到应该不是我的配置有问题,而是这个脚本有问题。

  为了验证我的猜想,我将脚本中的命令,在Linux系统下直接运行,结果hadoop进程全部开启,没有一个失败,这就证明我的猜想是正确的。

二、问题原因

  既然,hadoop的配置文件没有问题,那就是该 .sh 脚本有问题,再进过一番努力,得知,在Windows下编辑的文件,他的每一行是以 "\n\r" 结尾的,但在Linux系统下则是 "\n",这就是问题所在。

三、解决问题

  使用指令 "sed -i 's/\r$//' xxxxxxx.sh",将 .sh 文件中的 "\r" 全部替换成空白符,即可解决问题

  最后实验检测,运行脚本文件,hadoop进程全开,没有报错,验证通过。

猜你喜欢

转载自www.cnblogs.com/cmxbky1314/p/12096611.html