CentOS 配置 Python 脚本自动运行与 Crontab 定时任务详解

周叙
周叙
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍在 CentOS 系统中如何配置 Python 脚本的自动运行及定时任务。内容涵盖编写日志写入脚本、安装与启动 crond 服务、理解 crontab 命令格式(分、时、日、月、周、命令)、使用 crontab -e 和修改 /etc/crontab 两种添加任务的方式,以及重启服务、查看状态和权限检查等完整操作步骤。

在 CentOS 系统中实现 Python 脚本的自动运行

在进行正式配置之前,首先需要编写一个基础的 Python 脚本,该脚本的功能是将日志信息写入到文件中。

import os
import sys
import logging

current_path = os.getcwd() # 获取当前目录
logging.basicConfig(level=logging.INFO,  
                    filename=current_path + '/new.log',
                    filemode='a',
                    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                    )
logging.info("写入日志")

在 CentOS 中测试定时任务的配置

使用 crontab 来处理定时任务,如果系统中未安装,请自行通过百度等渠道进行设置。在正式启用 crontab 之前,建议先了解 crond 服务。crond 是 Linux 系统中用于周期性执行特定任务或等待处理事件的守护进程,其功能类似于 Windows 的计划任务;而 crontab 则是用于编辑或管理这些定时任务的命令行工具。简单来说,crond 是后台服务,crontab 是操作命令。

与 crond 服务相关的常用命令包括:

yum install crontabs systemctl enable crond (设置开机自启) systemctl start crond(启动 `crond` 服务) systemctl stop crond(停止服务) systemctl restart crond (重启服务) systemctl reload crond (重载配置文件) systemctl status crond (查看服务状态)

测试服务状态后,如果显示为active(running) ,即表示服务已成功运行。

1. crontab 配置文件详解

在用户创建的 crontab 文件中,每一行代表一个独立的任务。每行的各个字段对应具体的设置项,其格式共包含六个字段:前五个字段用于时间设定,第六个字段为要执行的命令,格式如下所示:

minute hour day month week command

在正式配置前,可以通过执行 crontab -l 命令来查看当前已开启的所有定时任务。

crontab -l

其他常见的 crontab 命令如下:

  • crontab -u:指定特定用户的 crond 服务配置
  • crontab -e:编辑 crontab 文件(即编辑定时任务)
  • crontab -r :删除 crontab 文件(即删除所有定时任务)
  • crontab -i :在删除 crontab 文件前提醒用户(即删除定时任务)

2. 详细配置说明

前文提到的定时任务包含六个字段,各字段的取值范围如下:

minute hour day month week command

这六个字段分别对应:分钟、小时、日期、月份、星期以及要执行的命令。

  • 第1列表示分钟,取值范围为 1~59,使用 * 或 */1 表示每分钟执行;
  • 第2列表示小时,取值范围为 1~23(0 代表 0 点);
  • 第3列表示日期,取值范围为 1~31;
  • 第4列表示月份,取值范围为 1~12;
  • 第5列表示星期,取值范围为 0~6(0 代表星期天);
  • 第6列指定要运行的具体命令;
    • *:表示任意时间,可代表 00-23 小时、00-12 月或 00-59 分。例如 0 9 * * * cmd 表示在每月的每周每天的 9:00 执行 cmd 命令;
    • -:表示区间范围。例如 00 17-19 * * * cmd,表示在每天 17、18、19 点的整点执行命令;
    • ,:用于分割多个时段。例如 30 1,3,5 * * * cmd,表示在每天凌晨 1点30、3点30、5点30 执行命令;
    • /n:n 为数字,表示分割间隔,意为每隔 n 单位时间执行一次,可理解为除法。例如 */6 * * * * cmd,表示每隔 6 分钟执行一次命令。

3. 设置定时任务的方法

直接写入定时任务的方法:crontab -e

*/1 1-2 * * * root /usr/bin/python3 /var/test1.py
*/1 1-2 * * * root /usr/bin/python3 /var/test2.py

通过文件形式添加任务的方法:vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
1 * * * * /usr/bin/python3 /usr/test/test.py

重新加载配置的操作:

service crond reload

重启 cron 服务。

service crond restart

上述两种方法的主要区别在于:

  • crontab -e 对应的是用户级别的配置,而 vim /etc/crontab 对应的是系统级别的配置。
  • crontab -e 与 vim /etc/crontab 的修改语法格式不同,后者在命令前多出一个 user(用户)指定字段。

查看相关文件的权限信息:

ls /etc/crontab -lh

检查任务是否已成功添加:

crontab -l -u root

在 CentOS 系统中查找文件的方法:

find / -name xxxx.conf # 在根目录查找
find /var -name xxxx.conf # 在 var 目录查找

至此,关于 CentOS 自动运行 Python 脚本及配置 Python 定时任务的介绍已完成。如需了解更多关于 CentOS 运行 Python 脚本的内容,请搜索本站历史文章或继续浏览后续相关文章,希望大家今后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。