我怎么会告诉我的Web服务器(Webfaction)只是运行一个Python文件,并让它永远运行? 有人告诉我应该使用cron但是我还没有find有关如何运行一次的好材料,而且还没有停止。
你需要做的是:
nohup ./path_to_your_script.sh&
一旦你这样做,你可以注销,closuresterminal,无论你的脚本将继续运行,直到服务器重新启动,或者你终止进程
从我的理解,你想保持你的进程运行后closuresSSH。 你可以使用screen 。
最简单的方法是使用nohup之类的东西来使进程成为守护进程:
http://www.cyberciti.biz/tips/nohup-execute-commands-after-you-exit-from-a-shell-prompt.html
克朗永远定期运行。 克朗职位可以按分钟,小时,每天,每周或每月运行。 这里有一个广泛的参考:
http://unixgeeks.org/security/newbie/unix/cron-1.html
这是一个快速参考:
在屏幕上运行对于testing来说是很好的,但是在某些时候它会因为某种原因中断(WebFaction在使用太多的内存的时候喜欢杀死进程),如果这样你就需要自动重启。
Supervisord( http://supervisord.org/ )非常适合运行并重新启动它们,如果出于任何原因失败。 它还处理“守护进程”进程,这是当你从当前terminal分离一个进程,所以它会继续运行后,你已经相当多的季节(当你注销SSH)时,它可以写代码在你的Python脚本中自己做这个,但是为什么还要有Supervisord这样的工具?
当然总有这种可能性,Supervisord会死(或被杀)。 这是你可以使用Cron的地方。 克朗让你定期运行一些东西。 Supervisord通常设置的一个很好的属性是,如果你在运行的时候尝试启动它,那么它实际上不会再次启动,所以如果你设置一个Cron任务来每隔5分钟启动一次Supervisord,那么你应该可以。
像这样的最佳实践方法是:
1)编写脚本,使其首先检查locking文件,以确保没有其他副本已在运行,并/或检查进程是否已经运行。
2)每隔一小时一次,在cron中input一个条目来启动脚本。
3)你的脚本可以使用while(1)循环来保持自己永远运行。 然而,最好永远不要让脚本永远运行,因为你可能会有潜在的内存泄漏,积累了很长时间,最终导致你的系统交换,然后你有一个非常缓慢的系统。 让它运行数千次迭代,或在一段时间后自行终止。 克朗将在下一个时间段再次启动。
4)logging您的输出使用>>redirect到一个日志文件,以便您可以捕捉任何消息,你可能要输出状态。