[英]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.