2016-09-20 80 views
1

我在crontab中有一份工作,每分钟运行一个脚本(/home/sys_bio/username/tracer.sh)。该脚本包含crontab没有完全正常工作。只有正在运行的echo语句

#!/usr/bin/env bash 

echo "starting" 
/home/sys_bio/username/p35/bin/python3.5 -m qefunctional.qe.tests.prodprobe -p post -j test.json 
echo "finised" 

当我在目录/home/sys_bio/username/和我运行commany ./tracer.sh,它运行正常。

但是,当我将作业添加到crontab时,只有echo部分运行。

另一件需要注意的是p35是我的python3所在的位置。所以/home/sys_bio/username/p35/bin/python3.5是我如何运行我所有的python3脚本。

这是我在我的crontab

* * * * * /home/sys_bio/username/tracer.sh >> /home/username/tracer.cron.txt

我正在创建的.txt文件,但只有echo语句被保存。

这看似混乱,但目录结构像这样:

/home 
     /sys_bio 
     /username 
      /qefunctional 
       __init__.py 
       /qe 
        __init__.py 
        /tests 
        __init__.py 
        prodprobe.py 
      test.json 
      /p35 
       /bin 
        python3.5 
      tracer.sh 
     /username 
     tracer.cron.txt 

*编辑*

我能够多一点添加到我的剧本,所以我可以错误重定向到一个文件。该脚本现在看起来是这样,我得到这个错误:

/home/sys_bio/username/p35/bin/python3.5: Error while finding spec for 'qefunctional.qe.tests.prodprobe' (<class 'ImportError'>: No module named 'qefunctional') 

脚本:

#!/usr/bin/env bash 

echo "Starting Tracer POST" 

/home/sys_bio/username/p35/bin/python3.5 -m qefunctional.qe.tests.prodprobe -p post -j /home/sys_bio/username/test.json -d -v 2>/home/username/crontab.output 

echo "Ending Tracer POST" 
+1

尝试使用'test.json'而不是相对的绝对路径... –

回答

1

包括路径的bash shell可能需要:

* * * * * /bin/sh /home/sys_bio/username/tracer.sh >> ... 

cron否则可能不真的知道该怎么做。

同样的原理也适用于脚本中包含的内容。使用相对文件名可能会失败,因为,如果你是用你的本地交互shell(例如),他们往往不理解一样:

test.json 

这可能需要使用绝对路径(例如):

/full/path/to/test.json 

编辑:从Python生成的错误中可以明显看出问题与路径相关。 Python正试图在路径/home/sys_bio/username/p35/bin/python3.5中找到模块,而不是/home/sys_bio/username/中的两个目录。修复的方法是将cd放入目录中或通过给模块提供绝对路径。通过添加以下到.sh脚本:

cd /home/sys_bio/username 

应允许命令后它来寻找模块存在,而不是两个级别的下降。

+0

我的更改后,它似乎像一个Python错误= [仍不知道如何解决它。感谢您的帮助!非常感激! – Liondancer

+0

@Liondancer:发布你的python项目结构可能会有所帮助,因为你现在的问题似乎更多的是关于它为什么它不适用于cron。这很可能像导入,初始化等简单。 –

+0

这是更新的项目结构,谢谢! http://dpaste.com/1BQ839A更新问题以及 – Liondancer