2017-10-16 181 views
0

我做了一個sh腳本每天晚上更新了我的工作目錄:CVS更新

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 

文件update_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 

爲什麼?

+0

您已經針對您的具體問題制定了答案,但值得注意的是,未來cron作業不會與您在交互式shell中時使用的環境變量相同。這通常是大多數「很好,當我手動運行但不通過cron」問題的原因。 –

回答

2

起初我懷疑是從crontab的CVS運行找不到rsh由於在登錄shell PATH變量差異和cron環境。

我錯了,答案是設置CVS_RSHssh從crontab運行的腳本,原始作者想通了。這是因爲CVS實際上是老的,默認爲rsh作爲遠程shell。但是因爲rsh不安全,所以CVS存儲庫的大多數管理員都需要連接到安全shell ssh

幸得:https://bugs.archlinux.org/task/12636#comment42630

+0

/usr/bin /其中: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_1/bin:/home/oracle/ scripts) –

+1

當你輸入'echo $ CVS_RSH'? – smbear

+0

如果我從crontab運行它CVS_RSH未設置。如果我在控制檯CVS_RSH = ssh中運行。 –

1

我寫

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

它的工作原理!