当前位置: 主页 > 运维经验 >

关于shell脚本或计划任务中命令路径的问题

时间:2013-05-11 21:58来源:linux系统运维 作者:小编1000 点击:
建议大家在写脚本的时候,在相关的linux命令中,加上绝对路径 故障一: 问题:在计划任务中,写了rsync同步命令,但经常不会同步,查找原因,手动执行,没问题,但脚本就经常不会
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


建议大家在写脚本的时候,在相关的linux命令中,加上绝对路径

故障一:
问题:在计划任务中,写了rsync同步命令,但经常不会同步,查找原因,手动执行,没问题,但脚本就经常不会同步
原因:这就是环境的问题导致的,因为没有使用绝对路径,所以环境有时候会找不到命令,就会出现不同步。

错误的脚本命令:
#!/bin/bash
RPid=`ps -ef|grep -v grep |grep -c 'rsync.pass'`
if [ ${RPid} -lt 1 ]
then
rsync -avzP --size-only --password-file='/data/shellscripts/rsync.pass' --exclude=php /data/ linuxyw@192.168.1.178::/video
fi

正确应该用:
#!/bin/bash
RPid=`ps -ef|grep -v grep |grep -c 'rsync.pass'`
if [ ${RPid} -lt 1 ]
then
/usr/bin/rsync -avzP --size-only --password-file='/data/shellscripts/rsync.pass' --exclude=php /data/ linuxyw@192.168.1.178::/video
fi

如果sj找命令的绝对路径?
which方法查找:
如查找rsync命令路径:
[root@linuxyw.com shellscripts]# which rsync
/usr/bin/rsync

如果脚本中大量要使用该命令,可用变量搞定,如:
RS='/usr/bin/rsync'

后面调用的时候用:
$RS

如:
#!/bin/bash
RS='/usr/bin/rsync'
RPid=`ps -ef|grep -v grep |grep -c 'rsync.pass'`
if [ ${RPid} -lt 1 ]
then
$RS -avzP --size-only --password-file='/data/shellscripts/rsync.pass' --exclude=php /data/ linuxyw@192.168.1.178::/video
fi

转载请注明linux系统运维
http://www.linuxyw.com/linux/yunweijingyan/20130511/312.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容