繁体   English   中英

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

[英]Python script running successfully on command prompt but not in 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

万一

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

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

还要检查您的电子邮件。 cron将通过电子邮件将输出以及任何无法运行作业的电子邮件发送给您。 如果您的系统上没有邮件服务器,则需要安装和配置一个邮件服务器,以便获得此类通知。

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

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

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

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

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

希望它对你有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM