文章目录
- 树莓派服务器自动执行python脚本
- 一、前言
- 二、设备平台
- 三、环境准备
- 3.1 SSH访问树莓派
- 3.2 配置系统镜像源
- 四、安装 miniconda
- 4.1 下载 miniconda
- 4.2 安装 miniconda
- 五、配置 Python
- 六、Cron 定时填报
树莓派服务器自动执行python脚本
一、前言
配置树莓派定时执行 Python 脚本
过往文章:
二、设备平台
硬件平台:树莓派 4B
系统版本:Raspbian GNU/Linux 10 (buster)
三、环境准备
配置 raspbain 的一些基本功能和服务,方便开发
3.1 SSH访问树莓派
博主一般通过 SSH 服务和 VNC 服务访问树莓派,不使用屏幕和键盘进行操作,所以有需要的同学可以开启 SSH 或者 VNC 服务,具体可以百度教程或者看我之前的文章,有说配置方式,只要主机和树莓派在同一个局域网下就可以通过 shell 工具软件进行访问了,没有的同学可以直接使用【屏幕+键盘】在命令行中直接进行操作
3.2 配置系统镜像源
更新一下系统镜像源,提高下载速度和稳定性
上清华大学的镜像源站扒镜像源: https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/
找到适合树莓派版本的镜像源,这里树莓派4B使用的是debian的修改适配版本
打开树莓派镜像源列表sources.list (此处用的vim编辑器,具体操作可以百度!不习惯可以将vim替换gedit)
sudo vim /etc/apt/sources.list
将内容替换为清华大学源(具体源需要上清华镜像站点搜索)
# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
再打开sources.list.d下面的raspi.list文件
sudo vim /etc/apt/sources.list.d/raspi.list
替换为以下内容
# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
更新源
sudo apt-get update
更新完成
四、安装 miniconda
我们使用的脚本时 python 脚本,首先肯定要准备 python 脚本的运行环境,用 conda 来安装 python 可以更好的安装相关依赖,不会损坏 python,conda 管理包和环境能减少在处理数据的过程中遇到的各种库和版本的问题,之后进行其他的开发也会很方便,所以这里我选择使用 miniconda 来安装 python!
4.1 下载 miniconda
首先我们先看一下自己树莓派的信息
uname -a
看到我的树莓派4b 是 armv7l 架构
然后我们上清华镜像源上找对应版本的 miniconda 源:清华 miniconda 镜像源地址
找到如下的源:
然后在树莓派中下载 miniconda 的安装脚本
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-armv7l.sh
下载完成
4.2 安装 miniconda
运行脚本进行安装
bash ./Miniconda3-latest-Linux-armv7l.sh
然后就是同意安装协议,输入 yes 后选择一个安装位置进行安装,这里安装位置我保存在默认位置 [/home/pi/miniconda3] 下面
安装完成后,我们需要将环境 source 到系统环境中去
export PATH="/home/pi/miniconda3/bin:$PATH"
source ~/.bashrc
source 完成后,调用如下指令升级 conda 的版本:
conda update conda
升级完成后,查看 conda 版本
conda -V
安装完成
注意!目前的 miniconda 支持的 python 版本最高 3.4 版本
需要更高级的版本的话需要自己去寻找解决方案,比如安装 berryconda 可以最高支持到 python 3.6 版本,安装方法和上面基本相同,下载的链接不一样而已!
五、配置 Python
用 conda 新建一个独立的 python 环境,防止影响到其他运行环境
conda create -n tc_py_env python=3.4
创建完成环境,激活环境
source activate tc_py_env
激活完成,就可以在该环境下运行 python 自动填写脚本了
此处的自动填写脚本是一个学长修改的填写脚本,我修改了一些内容适配 3.4 版本的 python,在内网下可以自动执行 python 程序
六、Cron 定时填报
填报完成之后,我们不可能每次都自己登录树莓派然后执行脚本,要让他自己定时执行
linux 内置的 cron 守护进程用于监视完成定时任务,其配置文件格式主要是下面三个部分,我们安装 cron 服务,然后配置每天 2.30 进行打卡!
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本
安装 cron
sudo apt-get install cron
我们使用如下命令编辑 pi 的 cron 进程
crontab -u pi -e
第一次进入会询问使用那种方式进行编辑,我使用 vim 编辑器,关于 cron 的配置文件内容在里面都有提到:
crontab的命令构成为:时间+指令
时间构成:
分-时-日-月-周
- 分钟 (0-59)
- 小时 (0-23)
- 日期 (1-31)
- 月份 (1-12)
- 星期几(0-6,其中 0 代表星期日)
(’/’ 表示每过多少个数字,’-’ 表示从时间点到时间点,’,’ 表示离散时间点)
指令构成:
指令就是在命令行内输入的程序,比如执行提交脚本就是
shell执行多个程序有如下关系
- A && B A成功则执行B
- A || B A失败则执行B
- A; B 顺序执行A B
- A & B 同时执行A和B
- A | B 管道
配置完成重新启动 cron
service cron restart
执行结果会发送到 pi 用户邮箱,我们打印执行结果就可以查看
cat /var/mail/pi