载行

A Student

VPS邮件通知设定: 以linux的crontab定时执行 sh 脚本的方法实现定时发送

前文 http://tsaihsing.me/2017/262
已经写好了一个python脚本,甚至每次可以从命令行接受参数修改 收件人,标题和内容。
这一部分是关于如何将“激活python3.4环境+运行mailme.py”定时执行
因为用了Anaconda的缘故还需要激活非默认环境,网上很多使用linux 默认 python 执行脚本的教程不适用。
另外一些小细节,和手动执行也是不同的。搜了一圈还是找到了解决办法成功了。以下是记录大致要点。

1.定时任务 cron 与 一次性任务 at

这方面网上中文资料也很多,不再赘述。需要强调的是,at 会用 /bin/sh 执行脚本。下文介绍cron

2.用.sh脚本打包命令

在前一篇里我们已经做到手动实现激活+运行python程序了

这里为了方便,将这两步打包成一个.sh脚本,下次运行.sh即可

#! /bin/bash
export PATH="/root/anaconda2/bin:$PATH" #否则会出现 下一步的activate命令失败的错误 .
#这里的路径在shell 里运行 which activate查看
source activate py34
python /home/py2017/sendanemail.py --Message="via sh" #这里python脚本一定要写绝对路径

另外注意.py文件的执行权限要开放。

3.将以上脚本添加入crontab

shell 中 crontab -e

第一次可以选择编辑器。我选择了 vim basic

之后用 vim 编辑 ,写入黄色箭头这一行,之后保存退出

4.(推荐)安装sendmail服务。

从而可以接受cron失败的“邮件”
在shell 里 运行 apt-get install sendmail和apt install mailutils 之后按提示操作即可

5.一个定时执行失败的可能原因提醒:时区检查

date命令查看VPS的时间;tzselect 更改时区,按提示操作即可。

参考及推荐阅读

[1]shell脚本简介概述 http://www.92csz.com/study/linux/14.htm

[2]crontab简介概述 http://www.92csz.com/study/linux/15.htm

[3]稍具体一些的crontab介绍 http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

[4]activate失败问题:https://stackoverflow.com/questions/45743633/running-a-bash-script-from-a-cronjob-not-working

[5]sendmail服务介绍和基本使用方法 http://www.cnblogs.com/zhanghaiyublog/p/3617386.html

Next Post

Previous Post

Leave a Reply

© 2024 载行

Theme by Anders Norén