1. 前言
上一期的推文 【Windows定时任务】自动打开手机上的云音乐APP 中,我们实现了Windows定时任务,虽然很简单,不过实际工作中,我们可能更多的是用服务器来跑任务。
所以今天我们简单了解下如何使用 crontab
在linux服务器上实现定时任务 。
2. 在服务器上跑通任务
我们首先要做的事情,是在准备好的服务器上,先跑通我们的测试任务。这里有2点需要关注的:
- 一个是把我们的跑测脚本,上传到服务器的指定目录上;
- 另一个是部署好跑测的python环境
前2次教程中,我们都是自动获取本地在线设备来进行自动化任务的,但是在服务器上,我们就不能再获取本地设备来进行自动化任务了,因为我们大概率不会直接把设备插在服务器的主机上面使用。
所以这次教程,关于获取设备这部分的脚本,会有所改变。我们本次演示的设备,会直接获取“网易私有云方案”搭建的“机柜集群”上面的设备,小伙伴们可以根据自己公司的设备集群方案,来获取一些设备进行自动化任务。
假设脚本修改好以后,我们上传到了 home/
目录下,脚本的名称为 auto_start.py
。
我们也可以简单地通过一些命令,来看下是否上传成功,例如:
1)部署python环境
今天我们演示的脚本,只涉及到了airtest语句,所以我们在linux的python环境安装上最新的airtest库即可:
pip3 install airtest 复制代码
如果脚本包含poco语句,还需要安装上pocoui。安装成功后,可以使用 pip3 list
查看:
2)运行测试脚本
脚本上传成功,python环境部署好之后,我们就可以在服务器上运行下我们的测试任务了:
python3 home/auto_start.py 复制代码
(为了方便同学们观察效果,这里打开了机柜设备的云真机页面)
3. 使用crontab创建定时任务
确保可以在服务器上跑通我们的脚本之后,就可以利用crontab服务来创建我们的定时任务,实现无人值守的情况,也可以自己完成这个启动指定应用的小任务。
crontab定时任务的教程,推荐查看这个链接的教程,写的非常详细:linuxtools-rst.readthedocs.io/zh_CN/lates… 。
1)编辑crontab文件:crontab -e
使用 crontab -e
指令,可以打开crontab文件并对它进行编辑:
刚打开文件时,是命令模式,我们需要按下键盘的i键,切换到输入模式,然后再来输入我们的crontab命令。
2)新增crontab条目
使用i键切换到输入模式之后,可以看到底部会提示 --INSERT--
,此时我们可以在注释后面新增一个定时任务的条目,比如:
# 每天上午10:30连接机柜设备并自动打开设备上的云音乐APP 30 10 * * * python3 home/auto_start.py 复制代码
编辑好之后,可以按下ESC,退出输入模式,进入命令模式。之后按下 : 键,进入底线命令模式,再输入 wq 回车,即保存文件并退出:
PS:这里默认编辑crontab文件时,使用的是 vim编辑器 。
3)查看crontab文件等待被执行
我们可以使用 crontab -l
来查看我们编辑好的crontab文件,然后就可以坐等定时任务被触发了:
如果我们发现,手动执行该任务没有问题,但定时任务就是不执行,此时就需要特别关注下环境变量的问题了。
4)关于crontab的文件格式
crontab文件包含6列,每一列都用一个空格分隔:
* * * * * 命令 复制代码
前面5个 * 分别代表:分 时 日 月 星期,按照这个格式,我们可以生产出非常丰富的定时任务:
4. 小结
今天的Linux crontab定时任务就分享到这里。对于熟练Linux的同学来说,应该问题不大;新手Linux同学,也可以找一个服务器,按照教程多熟悉一下。