社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

蚂蚁学Python • 8 月前 • 426 次点击  

背景

相比于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
 
426 次点击