Python脚本在命令提示符下成功运行,但不在crontab中运行

时间:2015-09-02 14:39:08

标签: python unix crontab

我在~home /目录中编写了一个python script.py,它调用位于~home / bin的其他python脚本。 当我运行script.py时,我能够成功运行它,但是当我在crontab中安排script.py时,script.py无法从bin目录中调用脚本。

Crontab脚本如下所示:

*/59 * * * * script.py &>~concatenation.log

script.py调用另一个脚本如下:

subprocess.call('/home/sdcme/bin/nii_mdir_sdcme %s %s' % (a, a), shell=True)

可以指出为什么script.py无法调用其他脚本。我怀疑问题是与PATh变量或其他类似的东西,但没有不知道如何我应该解决这个问题..

谢谢!

编辑:nii_mdir_sdcme脚本调用位于同一bin目录下的另一个脚本niidicom_sdcme:Crontab邮件,显示以下错误邮件 -

niidicom_sdcme: Command not found.
niidicom_sdcme: Command not found.

要点:

cronatab-> script.py - > nii_mdir_sdcme - > niidicom_sdcme 问题是nii_mdir_sdcme无法调用niidicom_sdcme。 但是当我在命令提示符下独立运行script.py时,一切正常......

nii_mdir_sdcme代码:

#!/bin/tcsh
if ($#argv < 2) then
  echo "Usage: nii_mdir_sdcme start_dir# end_dir#"
  exit
else    
 set start = $argv[1]
 set end = $argv[2]

  if ( ! -d ./medata ) then
   sudo mkdir ./medata
 endif
 sudo chown sdcme ./medata
 sudo chgrp users ./medata

 set i = $start
 while ( $i <= $end )
   echo " "
   if ( $i < 10 ) then
     echo "Entering 000$i..."
     cd 000$i
     sudo chmod 777 .
     niidicom_sdcme run0$i
     #mv *+orig.* ../medata
     sudo chmod 755 .
   else
     echo "Entering 00$i..."
     cd 00$i
     sudo chmod 777 .
     niidicom_sdcme run$i
     #mv *+orig.* ../medata
     sudo chmod 755 .
   endif

   cd ..

   @ i++  
 end

ENDIF

2 个答案:

答案 0 :(得分:3)

$PATH可能存在问题。有关cron用于运行作业的环境,请参阅crontab(5)。最简单的解决方案之一是调整crontab条目以提供脚本的完整路径:

59 * * * * /home/sdcme/bin/script.py &>~concatenation.log

另请查看您的电子邮件。 cron会通过电子邮件向您发送输出以及运行该作业的任何失败。如果您的系统上没有邮件服务器,则需要安装和配置邮件服务器,以便获得此类通知。

PS。使用*/59作为分钟规范并不是很有意义,因此我将其更改为上面的等效59

答案 1 :(得分:0)

首先使用crontab -e 退出编辑器使用:xi保存并退出 然后你必须从

编辑你的行
*/59 * * * * script.py &>~concatenation.log

*/59 * * * * /usr/bin/python script.py &>~concatenation.log

/ usr / bin / python是你的python的路径

希望它适合你