Py学习  »  Python

Linux系统怎样运行Python程序,并且定时运行?

蚂蚁学Python • 2 年前 • 882 次点击  

背景

相比于windows系统,Linux因为没有界面、命令交互便捷,更多用于生产环境的服务部署,可以高性能运行、常驻24小不间断运行。

如果你的爬虫,是一个定时的监控程序,或者一个长期的爬取任务,可以部署到Linux服务器上,实现后台自动的运行。

本文章介绍,怎样在Linux启动一个Python脚本,同时讲解怎么启动定时任务。

本文假设,你已经在Linux安装了minconda的Python环境,如果没有安装,可以查看博主的另一篇文章,或者直接咨询老师(微信:ant_learn_python)即可。

1、在Linux测试Python代码

新建一个简单的爬虫代码

# 引入requests库
import requests

# url
url = "http://www.baidu.com/"

headers = {
    "User-Agent": """Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"""
}

# 1. 获取网页内容
resp = requests.get(url, headers=headers)
resp.encoding = "utf8"

# 2. 存储结果
import datetime
cur_time = datetime.datetime.now().strftime("%Y-%M-%d-%H-%M-%S")
with open(f'baidu_page_{cur_time}.txt', "w", encoding="utf8") as f:
    f.write(resp.text)

print("success")

执行代码,运行成功。

2、怎样在Shell脚本中启动服务

如果要在Shell脚本中启动服务,得先加载Conda环境。

启动任务的脚本,文件名service_start.sh:

#!/bin/bash

#
 激活环境
source /root/miniconda3/etc/profile.d/conda.sh
conda activate myspider

#
 启动服务
nohup python craw_baidu.py 1>logs.log 2>&1 &

停止服务的脚本,文件名service_stop.sh。

#!/bin/bash

#
 杀死进程
kill -9 $(ps aux | grep 'craw_baidu' | awk '{print $2}')

如果要启动服务,那么就先cd到当前目录,然后输入如下命令即可启动。

sh service_start.sh

如果要停止服务,那么就先cd到当前目录,然后输入如下命令即可启动。

sh service_stop.sh

3、Linux怎样设置Crontab定时任务

如果在Linux开启定时任务,用Linux自带的Crontab工具可以支持实现。

crontab是一个用于在Unix操作系统上定期运行任务的命令。

用户可以创建、编辑、查看和删除这些定时任务,这些任务会按照指定的时间间隔或时间点自动执行。

通常,用户使用crontab命令来管理这些定时任务,它允许用户设置各种定时选项,如每天、每周、每月或特定小时运行任务。

要使用crontab命令来管理定时任务,可以按照以下步骤操作:

3.1 查看当前用户的crontab任务列表

crontab -l

这将列出当前用户的所有定时任务。

3.2 创建/编辑用户的crontab任务列表

crontab -e

这会打开一个文本编辑器(通常是Vi或Vim),允许您添加、编辑或删除定时任务。在编辑器中输入您想要运行的命令,并指定执行时间表达式。

3.3 crontab时间表达式格式

一个crontab时间表达式包含五个字段,分别表示分钟、小时、日期、月份和星期几。每个字段都有一些特殊符号和取值范围,如下所示:

*:匹配所有可能的值
,:逗号用于分隔多个值
-:表示范围
/:用于指定间隔

举例来说,下面的表达式表示每天早上9点运行任务:

0 9 * * *

再举个例子,每隔5分钟运行一次

*/5 * * * *

4、把爬虫程序设置为5分钟运行一次

如果要在crontab中执行代码,得写全路径。

cd /root/ && sh service_start.sh 1>logs.log 2>&1

这个命令,如果要5分钟运行一次,就在前面,加上crontab的时间声明。

*/5 * * * * cd /root/ && sh service_start.sh 1>logs.log 2>&1

然后输入命令crontab -e,进入编辑器界面。

输入字母i,进入编辑模式。

粘贴这段代码进去。

然后按键esc,输入:wq,退出编辑

使用crontab -l可以查看已经安装的列表

然后每隔5分钟,就会看到,爬虫已经生效了,每5分钟自动爬取一次。


如果想跟蚂蚁老师学习Python,建议学习数据分析课程。

咨询微信:ant_learn_python


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169280