有了成功运行的爬虫后,希望能每天定时运行,且遇到错误时能及时发出提醒。

发出提醒

可以用mailx发出邮件做提醒。没有的话先安装Yum install mailx。

以qq邮箱为例,需要设置/etc/mail.rc,增加以下行:

1 set smtp=smtp.qq.com
2 set smtp-auth=login
3 set smtp-auth-user=user@qq.com
4 set smtp-auth-password=code //不是登录密码,是stmp的授权密码
5 set ssl-verify=ignore
6 set nss-config-dir=/etc/pki/nssdb //没有的话需要mkdir新建
7 set from="user@qq.com(nickname)"
8 set smtp-use-starttls=yes

同时还需要在qq邮箱中开启IMAP/STMP,并获得授权码:

在邮箱设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中打开相关选项。

测试一下:mail xxx@aa.com,然后在subjuct后输入主题,回车输入内容,完事后输入.回车。发送成功。

或者:echo '邮件内容' | mail -s '邮件标题' 收件人邮箱。

或者:cat 邮件内容.txt | mail -s '邮件标题' 收件人邮箱

或者:mail -s '邮件标题' 收件人邮箱 < 邮件内容.txt

https://blog.csdn.net/yongren_z/article/details/85119088

https://www.cnblogs.com/huyihao/p/5543125.html

开始用outlook设置,折腾了半天还是失败,而且每次登陆都好慢,干脆放弃了。

还有一个选择是发微信,有空可以再研究一下。http://sc.ftqq.com/3.version

https://blog.csdn.net/qq_19645105/article/details/90173867

写BASH

 #!/bin/bash
workpath="/home/share/scraping/getlj"
cd $workpath
# 进入工作目录
python3 -save_todaylj.py >-getlj_err.txt
# 输出错误文件 todaydate=$(date +%F)
# 测试err文件中有无内容,如有发送提醒
if [ -s $workpath/-getlj_err.txt ];then
# `pwd`/getlj_err.txt也可,pwd=当前工作目录
    # -s等同于test -s测试是否存在文件且不为空,有非空则返回TRUE,在这里意味着有error记录
echo $todaydate:error
cat '2-getlj_err.txt' | mail -s "$todaydate getlj ERROR" cityfxckr@qq.com
else
echo $todaydate:ok
cat '1-ljszresult.txt' | mail -s "$todaydate getlj RESULT" cityfxckr@qq.com
fi # 邮件主题中包含变量时,一定要用双引号才行
# 需要将此段代码转换成linux模式即每行结尾只有\n(LF),而windows模式是\r\n(CRLF)运行会报错,
   notepad++的编辑-文档格式转换中可以转换
# 发送邮件的内容,此例中的txt文件,同样需要时linux模式,否则不会再正文发送,而会变成一个bin格式的附件

邮件主题中变量的设置:

https://stackoverflow.com/questions/20535024/how-to-insert-the-current-date-in-mail-command-in-linux

https://unix.stackexchange.com/questions/383722/adding-date-to-file-name-when-sending-email

https://stackoverflow.com/questions/35920673/sending-mail-with-subject-as-variable

test命令的使用:

https://www.jianshu.com/p/6d55b6c0f350

https://man.linuxde.net/test

https://linuxize.com/post/bash-check-if-file-exists/

if记得要有fi结尾。

定时运行

需要用到crontab功能。https://www.cnblogs.com/ftl1012/p/crontab.html

修改etc/crontab文件,增加要定时运行的程序,并将运行输出记录到runlog.txt中:

0 8 * * * wts . /home/0-rungetlj.sh>>/home/2-runlog.txt /etc/cron.daily

(关于linux的运行级别:https://blog.csdn.net/ltstud/article/details/78683523)

成功,这样每天就可以收到抓取的结果,或者是出现的错误以便及时修改。

小白的linux笔记8:linux自动运行爬虫并发送提醒邮件的更多相关文章

  1. [转载] 在Linux中,开机自动运行普通用户的脚本程序

    FROM:http://blog.csdn.net/sinboy/article/details/2466225 FROM:http://www.2cto.com/os/201006/50680.ht ...

  2. 【Linux笔记】Linux目录结构

    [Linux笔记]Linux目录结构   本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...

  3. 小白的linux笔记7:批量运行复杂的linux命令组合——BASH简单使用法

    linux的BASH就相当于windows下的BAT文件,可以批处理命令.比如写好一个python脚本后,需要在运行时候加参数,但这个参数又不想每次输入,就可以用BASH的方式写好整条命令,然后直接运 ...

  4. Linux笔记(开机自动将kerne log保存到SD卡中)

    有时候为了测试机器的稳定性,需要煲机测试几天的情况,这个时候机器已经封装好,不能再接串口线出来. 为了追溯问题,就需要将log信息保存下来. 于是就需要这样一个功能:系统启动后,自动将kernel的l ...

  5. Linux笔记之——Linux关机命令详解(转)

    原文连接:http://www.jb51.net/os/RedHat/1334.html 在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重 ...

  6. [linux笔记]理清linux安装程序用到的(configure, make, make install)

    我作为一名经常和linux打交道的程序员,每次在linux安装软件都祈求可以用——apt-get,yum,brew等应用程序管理器安装,有的时候事与愿违,你只能自己编译安装-wtf,说好的美丽世界呢? ...

  7. linux笔记:linux系统安装-系统分区

    分区类型: 1.主分区:最多只能有4个. 2.扩展分区:最多只能有1个:主分区+扩展分区最多有4个:不能写入数据,只能包含逻辑分区. 3.逻辑分区. 格式化: 向磁盘中写入文件系统.会附带地清空磁盘中 ...

  8. linux笔记:linux软件包管理,软件安装位置

    linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...

  9. 【Linux笔记】linux crontab实现自动化任务

    在服务器中我们经常需要定时自动让程序自动进行数据备份.程序备份.执行某个进程等等操作,在linux服务器一般使用crontab实现,而windows下使用计划任务实现,crontab是linux系统下 ...

随机推荐

  1. NOde.js的安装和简介

    1.nodejs的安装 1.1 检测nodejs的版本 node -v (version:版本) 1.2 path配置nodejs 的环境变量(当前版本都是自动安装配置环境变量)指令: path 1. ...

  2. MinGW安装配置过程

    MinGW安装过程 一. 下载 MinGW官网下载地址:http://sourceforge.net/projects/mingw/ 二. 安装 1. 双击下载好的压缩文件. 2. 然后出现如下界面, ...

  3. Spring Boot定义系统启动任务的两种方式

    Spring Boot定义系统启动任务的两种方式 概述 如果涉及到系统任务,例如在项目启动阶段要做一些数据初始化操作,这些操作有一个共同的特点,只在项目启动时进行,以后都不再执行,这里,容易想到web ...

  4. 【译】SQ3R学习法则

    SQ3R 观察-提问-阅读-复述-回顾 背景 SQ3R是一种理解策略,可帮助学生在阅读时思考他们正在阅读的文章. SQ3R通常被归类为学习策略,通过教导学生在初次阅读一篇文章时如何阅读和像高效读者一样 ...

  5. Ecplise-SVN插件异常: 由于目标计算机积极拒绝,无法连接。

    在Ecplise中,选择team->share project时,出现以下异常 由于目标计算机积极拒绝,无法连接. svn: Unable to connect to a repository ...

  6. 快速理解YOLO目标检测

    YOLO(You Only Look Once)论文 近些年,R-CNN等基于深度学习目标检测方法,大大提高了检测精度和检测速度. 例如在Pascal VOC数据集上Faster R-CNN的mAP达 ...

  7. HDU4195 Regular Convex Polygon (正多边形、外接圆)

    题意: 给你正n边形上的三个点,问n最少为多少 思路: 三个点在多边形上,所以三个点的外接圆就是这个正多边形的外接圆,余弦定理求出每个角的弧度值,即该角所对边的圆周角,该边对应的圆心角为圆心角的二倍. ...

  8. Disk:磁盘管理之LVM和系统磁盘扩容

    简介 小伙伴们好,好久不见,今天想给大家介绍一下关于磁盘管理的方法和心得:磁盘管理可谓运维工作中的重要内容,主要包括磁盘的合理规划以及扩缩容 常用的磁盘管理方法为LVM(Logical Volume ...

  9. Nginx+uWSGI+Django原理(转发)

    Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...

  10. [C/C++]const限定符总结

    const限定符 const是一种限定符,被const所限定的变量其值不可以被改变. const的初始化 由于const一旦创建其值就不能够被改变,所以我们必须对其进行初始化 const int a; ...