Linux–CentOS定时运行Python脚本
最近公司的项目开始进入运营阶段,数据库的记录也开始多了起来。看了postgresql的自动清理好像不太符合需求,暂定对接口请求记录表保留3个月内的记录,既然postgresql不支持那就发挥python的优势,自己写个脚本实现
执行所需
- Linux下安装crontab
- 符合自己需求的python脚本
由于自己和公司所使用的是云服务器,均已安装crontab,所以这里略过,有需要的小伙伴可以看看博主极客Geek的博客:http://blog.csdn.net/netdxy/article/details/50562864
操作步骤
这里有两种方法进行定时任务添加,分别是crontab -e和编辑/etc/crontab。两种方法的语法也略有不同,/etc/crontab的语法比crontab -e多了一个用户字段。
- crontab -e 用户级,不能设置用户字段
- /etc/crontab 系统级,只能root用户权限使用,需要设置用户字段
crontab -e
这种方式是用户级的,所有用户的可以使用,实际保存在/var/spool/cron/username中。但有的linux系统加在crontab -e会无效,这种方法不会对语法进行校验。具体操作步骤为:
crontab -e
- 添加定时任务,如每周一3点执行python脚本
0 3 * * 1 python /data/www/test.py
wq保存退出,完毕 语法为
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
/etc/crontab
直接编辑/etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
直接编辑/etc/crontab 比 crontab -e 多了一个用户名字段,该方法是系统级的,必须root权限使用 步骤:
vi /etc/crontab
- 在后面添加定时任务,如每周一3点执行python脚本
0 3 * * 1 root python /data/www/test.py
wq保存退出,完毕
在此附上python自动清理3个月前postgresql数据表脚本test.py
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="api_request_log",
user="postgresql",
password="123456",
host="127.0.0.1",
port="3432")
print("Opened DELETE successfully")
cur = conn.cursor()
cur.execute("DELETE from api_request_log where record_time < (now() - interval '2 month');")
conn.commit()
print("api_request_log DELETE successfully")
conn.close()
补充Crontab语法
该部分转载自http://blog.csdn.net/netdxy/article/details/50562864
这个文本解释的已经比较直观了,其中 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
这里举几个例子,基本涵盖了常见的一些情况:
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令
*/15 * * * * ls 每15分钟执行一次ls命令
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令
22 4 * * * root run-parts /etc/cron.daily
#每天4:22以root身份执行/etc/cron.daily目录中的所有可执行文件,run-parts参数表示,执行后面目录中的所有可执行文件。
相关文章
- 每天五分钟学Python,数字和字符串的基本用法
- linux网络配置出现E325,Linux CentOS E325错误,如何解决?VI如何使用?「建议收藏」
- 在Linux/CentOS中编译安装Python
- 一步一步学会在Linux上运行Python程序(linux运行python程序)
- 搞定!Linux下快速设置Python环境变量(linux设置python环境变量)
- 新手必备:Linux文件传输指南(linux文件传输)
- 掌握Linux环境下的Python编程(linux执行python)
- Linux查看Python版本的有效方法(linux查看python版本)
- 提升Linux环境:升级Python(linux升级python)
- 语言Linux下开发:从C语言到Python(linux下用什么编程)
- 实现Linux下Qt应用静态编译的方法(linux下qt静态编译)
- 修复Linux系统,重生激活机器(linux系统假死)
- Linux下建立多级目录的技巧(linux建多级目录)
- CentOS下关闭Linux防火墙的方法(关闭linux的防火墙)
- Linux查看内存分配:步骤与指导(linux查看内存分配)
- 学习Linux多线程:掌握多线程技术,提高程序效率(linux多线程学习)
- Linux解锁:快速解开文件锁链(linux解锁文件)
- Linux自动启动脚本简介(linux启动脚本)
- Linux环境下Python开发的历程(linux与python)
- 25个常见的Linux发行版:Ubuntu、Fedora、Mint、Debian、CentOS、Arch、OpenSUSE、RedHat、Kali、Slackware、Gentoo、Mageia、Zorin、Manjaro、PCLinuxOS、Knoppix、Deepin、LXLE、TinyCore、ParrotSec、GeckoLinux、SparkyLinux、Bodhi Linux、Trisquel、GhostBSD。(常见的linux发行版本)
- 把 CentOS 运行在 Kindle 上:改变 Linux 探索之旅(kindle linux)
- CentOS 7:满足专业用户的Linux发行版(cent linux)
- 占用Linux内存使用情况探查法:简明扼要解读(怎么查看linux的内存)
- Linux下运行Python脚本的步骤简介(linux如何运行python脚本)
- Linux下从系统卸载Python(linux下卸载python)
- 从零学Python之入门(五)缩进和选择