Page

[linux]使用crontab进行定时操作(使用python定时发送邮件实例)

881Anson16-11-20


总结最近的linux的crontab的使用经验

首先列出要用到的几个目录,文件和解析器:


/usr/local/bin/python3 :python3程序的目录

/home :存放要执行的脚本目录

/var/log/cron :crontab的日志文件

/var/spool/cron/root :crontab的任务文件

/etc/cron-hourly :crontab间隔执行任务的目录(把脚本放在这个目录即可定时执行)


#!/usr/local/bin/python3 :py3的解析器目录

#!/bin/bash :shell的解析器目录

#!/usr/bin/env python3 :指定程序命令

#!/bin/env python3 :同上


注意:/usr/bin/env是指向/bin/env的,我们也可以在首行使用#!/bin/env python3


第一、在home目录下存放名字为smtp的sh脚本和py脚本,通过sh脚本调用py脚本


blob.png

smtp:

#!/bin/bash
/usr/local/bin/python3 /home/smtp.py

smtp.py:


参考代码:http://tp0.top/index.php/article/page/id/207.html


blob.png


第二、输入命令crontab -e进入任务区,添加* * * * * /home/smtp 意思是每分钟执行一次

smtp脚本,保存,并确保crontab服务是启动状态,或者输入service crond restart


blob.png

blob.png


第三、查看cron实时日志,可以看到每分钟执行了一次smtp脚本,并且邮箱也正常收到邮件


blob.png

blob.png





知识点总结:

1、linux中的独立脚本首行要标明解析器路径

(例如#!/usr/local/bin/python3,#!/bin/bash;

或者#!/bin/env python3;#!/bin/env sh)如果没有设置软连接或者安装目录不是/usr/bin的

尽量写真实路径

#!/usr/local/bin/python3


2、sh中要使用/usr/local/bin/python3 /home/smtp.py这种绝对路径执行

#!/bin/bash
/usr/bin/usr/local/bin/python3 /home/smtp.py


3、可以在crontab -e中使用/home/smtp.py定时执行py脚本,前提是首行

为#!/usr/local/bin/python3,或者在/usr/bin中有软连接指向真实目录;

也可以直接写/usr/local/bin/python


即:

* * * * * /home/smtp.py
* * * * * /usr/local/bin/python3 /home/smtp.py


4、要执行的文件的权限要设置成可执行,例如chmod 700 smtp.py;chmod 700 smtp





来自ansion博客

2016年11月20日