我在~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
答案 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的路径
希望它适合你