crontab 定时执行python脚本

时间:2022-05-10 07:52:39
今天用python写了处理文件的程序,但是因为快要下班了,所以想用crontab来完成。搜了一下,大部分都是执行的shell脚本,自己根据搜索的资料写了测试了几次,亲测能用,整理一下。

参考网址:http://zhidao.baidu.com/question/145860117.html

<pre id="answer-content-440639755" class="answer-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; background-color: rgb(255, 255, 255); padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace;"><span style="white-space: pre;">		</span>      http://the5fire.com/ubuntu-crontab.html

 
 

首先是python程序,就不贴源程序了,把测试crontab的python程序写出来吧。

crontest.py

[python]  view plain copy
  1. #!/usr/bin/python  
  2. #encoding=utf-8  
  3. import os  
  4. outfileName = '/data5/outcid.txt'  
  5. outfile = open(outfileName, 'w')  
  6. outfile.write("This is crontab command test!")  
  7.   
  8. outfile.close()  
然后更改crontest.py的权限,使其可以执行。然后就是用编辑crontab命令了。如果用vi /etc/crontab命令的话,会列出root的已有任务列表,这是针对系统的服务。如果是想用当前用户执行,可以用命令crontab -e 来打开一个vi编辑自己的任务。

crontab -e

输入

*/2 * * * * python /data5/crontest.py >> /data5/crontest.py.log 2>&1

意思是每个两分钟就用python执行/data5目录下的crontest.py,将日志输出值crontest.py.log中,当然,程序crongtest.py中的输入到指定文件的数据是不会输入到该log文件中的,后面那个2>&1的意思是把错误的输出也输出到标准输出(2表示错误,2>表示错误输出,&表示等同于,1表示正确),因此如果运行出错也会把错误输出到之前定义的log中

以下为有用的参考资料:

<pre id="answer-content-440639755" class="answer-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; background-color: rgb(255, 255, 255);"><span style="font-size: 18px;">分钟 小时 日期 月份 周 命令

举例:
每天8点30分运行命令/tmp/run.sh
30 8 * * * /tmp/run.sh
每两小时运行命令/tmp/run.sh
0 */2 * * * /tmp/run.sh</span>
 
 
<span style="font-size: 18px;">设置的时候用crontab -e来设置
设置好后可以用crontab -l来查看
设置好后不用重启crontab服务,马上生效
但至少间隔一分钟,也就是说9:50分设置9:51分运行的命令,很可能是不会生效的,至少要设置9:52分运行。 

你用哪个用户运行crontab -e,那么执行的时候就是以哪个用户身份执行</span>
<span style="font-size: 18px;">以及这个网址 http://the5fire.com/ubuntu-crontab.html</span>