2012-10-29 116 views
0

我有一个python脚本,上传到一个全天候运行的web服务器上。我想自动执行此脚本,以便它每小时自动运行一次。这可能吗?我碰到了cron工作的东西,但我不熟悉如何实现这一点。任何帮助或例子都会有所帮助。自动化Python脚本

+0

你的问题是关于['cron'](http://en.wikipedia.org/wiki/Cron#Examples)吗? – chrisaycock

+0

不是python特有的。站内搜索。 –

+0

cron真的是这里最好的答案。肯定有一条学习曲线,但其他任何工具都会变得过于矫枉过正,并且可能是一个可疑附加值的cron包装。 – mattbornski

回答

1

打开你的cron作业文件,

crontab -e 

中加入这一行

* 0 * * * /path/to/my/script 

我会建议使用bash脚本或东西来检查进程是否已经在运行。

if [ `ps -u USERNAME | grep -i PROCESSNAME | wc -l` -lt 1 ] 
then 
    nohup python main.py & 
fi 

编辑

键入命令crontab -e然后按回车键。你的屏幕会变成黑色,并附带一排~。按i您现在处于插入模式。请输入* 0 * * * /path/to/my/script,确保这是您脚本的绝对路径。按Esc,然后输入:x,然后按回车。这应该保存cron文件,也就是假设vivim是cron文件的默认编辑器。

旁注

另外,还要确保你的脚本是可执行的,chmod 777 myscript.py应该做的伎俩,但是请使用chmod和权限熟悉。

另外请确保你的#/python/version/to/use作为python文件的第一行。

+0

约翰,我不知道如何做到这一点。我所知道的是,我有一个名为program.py上传到服务器上的文件,我想定期执行它..有人告诉我,它可以通过cron job....这就是我所知道的。你能否一步一步详细说明? – khan

+0

是的..我有。 – khan

+0

@khan,请参阅编辑。 – John

1

第一:问问自己数据应该是动态而不是静态的。通过数据库或cgi脚本可以更好地访问动态数据。

第二:请仔细阅读说明书。 crontab是用于管理cron作业的程序。网络搜索可以给你更深入的信息(知道哪个钉子是战斗的一半)。 man crontab在计划中没有太多帮助,但是如果它不按照您的期望编辑文件,可以指出程序的指针。

第三:通过执行'which python'并将描述符添加到文件的顶部来确定python的运行位置。在我的情况下,它是#!/ usr/bin/python

第四:将你的pyhton脚本放在适当的地方,或许/ usr/local/sbin /如果它足够重要并且你有权限。使用文件上的chmod 775使您的文件可执行。运行该文件以确保它按预期执行。

第五:使用crontab -e编辑cron作业表如果你不能像自己一样运行它,请尝试在sudo下运行它(例如sudo crontab -e)。

第六:添加行0 * * * * /myPath/myfile.py

这将运行每分钟变化为00维基百科说@hourly应该工作时间,但我从来没有尝试过。

格式如下

* * * * * command to be executed 
┬ ┬ ┬ ┬ ┬ 
│ │ │ │ │ 
│ │ │ │ │ 
│ │ │ │ └───── day of week (0 - 6) (0 is Sunday) 
│ │ │ └────────── month (1 - 12) 
│ │ └─────────────── day of month (1 - 31) 
│ └──────────────────── hour (0 - 23) 
└───────────────────────── min (0 - 59) 

第七:测试测试测试。

crontab -l列出了cron作业规范。

当cron执行时,可能必须存在环境变量,例如$ PYTHONPATH。

如果crontab中有6个字段,则第一个字段可能是秒。

有一天你想记录seomthing的输出。阅读关于在/ var/logs中创建日志文件目录以及如何使用/etc/logrotate.d/文件进行管理的信息。

+0

这真的很有帮助。谢谢。 – khan