shell 命令遇到的一些问题

1.  command not found

一般都是未安装,需要root 权限去安装服务,就可正常使用。比如rz, sz, crontab, sendemail, lftp等

2. rz 传输失败,输出一堆乱码

有的地方建议使用  rz -ary --o-sync, 然而并没有解决。

a 表示使用ascii码格式传输文件,如果是Dos格式的文件,会转换为unix格式
-r 使用 Crash recovery mode. 即文件传输中断会重传
-y 表示文件已存在的时候会覆盖
--o-sync 采用同步写模式,以处理从缓存写到磁盘时中断丢失的情况

主要是采用 -r 和 --o-sync 对异常处理会有所加强,其他选项只是辅助。

最后用它解决了,rz  -be

具体原因可以参见 :

http://blog.sina.com.cn/s/blog_5357c0af0100zade.html

注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。
-a, –ascii
-b, –binary 用binary的方式上传下载,不解释字符为ascii
-e, –escape 强制escape 所有控制字符,比如Ctrl+x,DEL等
rar,gif等文件文件采用 -b 用binary的方式上传。
 
文件比较大而上传出错的话,采用参数 -e
如果用不带参数的rz命令上传大文件时,常常上传一半就断掉了,很可能是rz以为上传的流中包含某些特殊控制字符,造成rz提前退出。
 
综上,请使用 rz  -be
 
 
sz和rz对大的文件传输可能会传输失败,最好压缩后再传输。
 

3. crontab 执行java报错:

含有java命令的sh 脚本,可以直接运行。在crontab却提示 java, command not found.

原因是,无法识别java的安装路径。需要:

1) 导入java安装的环境变量

source /etc/profile

2)也可以把 环境变量 写入脚本中

JAVA_HOME="/data/java/jdk"
CLASSPATH=".:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar"
PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME CLASSPATH PATH

4. lftp连接成功,却无法ls等命令

报错信息:`ls' at 0 [Delaying before reconnect: 251]

网上有说几种方法:

在/etc/lftp.config 中添加   #set ftp:passive-mode off 等等。。。。

其实都不是原因,最后发现应该是ftp地址的原因,重设修复。

原文地址:https://www.cnblogs.com/skyEva/p/5072090.html