2017-08-17 76 views
1

我只是在Cent OS开发服务器上设置了一个cron选项卡/作业。为CentOS 7安排使用crontab/cron的python 3.6脚本

在我的crontab中,我有以下:

34 15 * * * CD welcomeclient-0.0.5 & & python3.6 main.py

(忽略时间设定,在其中加入约15 :32 UTC服务器时间,以获得下一次计划运行)。

在命令行cd welcomeclient-0.0.5 & & python3.6 main.py很好......任何建议?

新增信息:welcomeclient-0.0.5是根下的液滴,并python3.6在USR/bin中......

回答

2

尝试在你的crontab命令使用绝对路径:

34 15 * * * cd /foo/bar/welcomeclient-0.0.5 && /usr/bin/python3.6 main.py 

或者,假设main.py不还使用相对路径它里面:

34 15 * * */usr/bin/python3.6 /foo/bar/welcomeclient-0.0.5/main.py 
+0

目录welcome-client实际上在根目录中...... –

+0

这对我应该如何引用它有影响吗? –

+0

我修改的是:50 20 * * * /usr/bin/python3.6 /root/welcomeclient-0.0.5/main.py&&&&root/welcomeclient-0.0.5/main .log' –

1

貌似你试图改变目录的crontab,就像omu_negru说你需要使用完整代替路径。这是因为crontab即使在您的名字下运行也不会继承您的环境变量,例如$ PATH。

试试这个。首先,转到您的脚本所在的目录...并将您的main.py转换为可执行文件,以便您不必再调用python main.py。最简单的方法,这样做是...

$ chmod u+x main.py 

,如果你做的LS现在-l,你会看到你的权限,这将允许你直接运行它的用户部分有“×”。

-rwxr--r-- 1 user user 0 Aug 17 17:55 main.py 

现在您可以简化crontab的语法是这样的......

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py 

我也想从脚本输出捕获到一个日志文件,以便更容易当排查事情没有我们的工作按计划,具体如下:

34 15 * * * /foo/bar/welcomeclient-0.0.5/main.py & >> /foo/bar/main.log 

日志应该被添加到登录旋转,否则将继续填补,并最终使你的系统运行的空间,但这是另一个牛逼opic已经在这个网站上解决。

+0

添加了我的问题中包含的信息 - 另外,在输出任何内容之前main.log必须存在,否则cron会在第一次“成功但未成功”运行后创建它? –

+0

我现在实际上100%确定。我通常会前往目录,并使用'touch main.log'来确保它在登录之前确实存在。 – darekm101