crontab中的CVS更新

crontab中的CVS更新,cron,cvs,Cron,Cvs,我为每晚更新我的工作目录制作了一个sh脚本: 20 20 * * * /home/oracle/scripts/lancia_script.ksh /home/oracle/setORACLE_ENV /home/oracle/scripts/update_cvs.ksh > /home/oracle/logs/crontab/update_cvs.log 2>&1 文件更新_cvs.ksh: [...] cd $CVSDIR cvs update cd - cp -R

我为每晚更新我的工作目录制作了一个sh脚本:

20 20 * * * /home/oracle/scripts/lancia_script.ksh /home/oracle/setORACLE_ENV   /home/oracle/scripts/update_cvs.ksh > /home/oracle/logs/crontab/update_cvs.log 2>&1
文件更新_cvs.ksh:

[...]
cd $CVSDIR
cvs update
cd -
cp -R $CVSDIR/* $SCRIPTSDIR/
chmod 744 $SCRIPTSDIR/*.ksh
[...]
如果我手动运行它,则不会出现问题,但如果我安排它,则会收到:

cvs [update aborted]: cannot exec rsh: No such file or directory 
cvs [update aborted]: end of file from server (consult above messages if any) /u01/home/oracle

为什么?

起初,我怀疑从crontab运行的CVS找不到
rsh
,因为登录shell和
cron
环境中的
PATH
变量不同

我错了,答案是在crontab运行的脚本中将
CVS\u RSH
设置为
ssh
,正如最初的作者所指出的那样。这是因为CVS非常旧,默认为
rsh
远程shell。但是由于
rsh
是不安全的,CVS存储库的大多数管理员可能需要连接到一个安全的shell,
ssh


归功于:

起初,我怀疑从crontab运行的CVS找不到
rsh
,因为登录shell和
cron
环境中的
PATH
变量不同

我错了,答案是在crontab运行的脚本中将
CVS\u RSH
设置为
ssh
,正如最初的作者所指出的那样。这是因为CVS非常旧,默认为
rsh
远程shell。但是由于
rsh
是不安全的,CVS存储库的大多数管理员可能需要连接到一个安全的shell,
ssh

归功于:

我写作

[...]
export CVS_RSH=ssh
cd $CVSDIR
cvs update
cd -
cp -R $CVSDIR/* $SCRIPTSDIR/
chmod 744 $SCRIPTSDIR/*.ksh
[...]
它起作用了

我写

[...]
export CVS_RSH=ssh
cd $CVSDIR
cvs update
cd -
cp -R $CVSDIR/* $SCRIPTSDIR/
chmod 744 $SCRIPTSDIR/*.ksh
[...]

它起作用了

/usr/bin/which:no rsh in(/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/etc::/usr/openwin/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/u01/app/oracle/product/11.2.0/dbhome\u 1/bin:/home/oracle/scripts)键入
echo$CVS\u rsh
时得到什么?如果我从crontab CVS\u rsh运行它,则未设置。如果我在控制台中运行CVS_RSH=ssh./usr/bin/which:no-RSH in(/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb:/etc::/usr/openwin/bin:/usr/local/bin:/usr/ccs/bin:/usr/sfw/bin:/u01/app/oracle/product/11.2.0/dbhome\u 1/bin:/home/oracle/scripts)键入
echo$CVS\u RSH
时会得到什么?如果我从CVS选项卡运行它,RSH将被取消设置。如果我在控制台CVS_RSH=ssh中运行,您已经找到了特定问题的答案,但值得注意的是,当您使用交互式shell时,cron作业不会使用与您相同的环境变量运行。这通常是导致大多数“手动运行时很好,但不是通过cron运行”问题的原因。您已经找到了特定问题的答案,但值得注意的是,在将来,cron作业不会使用与您在交互式shell中运行时相同的环境变量运行。这通常是导致大多数“手动运行但不是通过cron运行时”问题的原因。