Python脚本在命令提示符下运行成功,但在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不能调用另一个脚本。我怀疑问题是与路径变量或其他类似的东西,但不知道我应该如何解决这个问题。

谢谢!

编辑: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

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

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

还要检查你的电子邮件。Cron将通过电子邮件将输出和运行作业的任何失败发送给您。如果您的系统上没有邮件服务器,您将需要安装和配置一个,以便您收到此类通知。

p。使用*/59作为分钟规格不是很有意义,所以我将其改为等效的59,上面。

首先使用crontab -e要退出编辑器,请使用:xi保存并退出然后从

开始编辑
*/59 * * * * script.py &>~concatenation.log

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

/usr/bin/python是python的路径

希望它对你有用

相关内容

最新更新