linux中定时执行python脚本

linux和wsl执行方法相同,windows也可以通过这种方法在linux中依照如下方法完成。

crontab -e 后添加如下命令,每分钟执行 

* * * * * /usr/bin/python3 /home/lighthouse/python/get_cpu_usage.py

先用如下脚本测试

import psutil
import datetime
import osdef get_cpu_usage():# 获取CPU的总使用率,interval参数设置为1,表示计算过去1秒内的平均CPU使用率usage = psutil.cpu_percent(interval=1)return usagedef write_to_file(cpu_usage):# 获取当前时间current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')# 写入到文件,如果文件不存在则创建current_file_path = os.path.abspath(__file__)current_directory = os.path.dirname(current_file_path)write_file_path = os.path.join(current_directory, "cpu_usage_log.txt")with open(write_file_path, 'a') as file:file.write(f"{current_time} - CPU Usage: {cpu_usage}%\n")if __name__ == "__main__":# 获取CPU占用率cpu_usage = get_cpu_usage()# 写入到文件write_to_file(cpu_usage)

执行结果如下: 

2024-05-28 11:59:02 - CPU Usage: 2.6%
2024-05-28 12:00:02 - CPU Usage: 5.7%
2024-05-28 12:01:02 - CPU Usage: 2.6%
2024-05-28 13:59:56 - CPU Usage: 13.4%
2024-05-28 14:00:05 - CPU Usage: 6.4%
2024-05-28 14:01:01 - CPU Usage: 7.4%

上面标蓝是我中午吃饭电脑休眠的结果,任务直接停止了,这要是我电脑休眠了任务岂不是错过了,注意要将windows的休眠任务关掉才行,包括盖盖子休眠和长时间不操作休眠都要关。

也可以借助如下shell脚本一步构建:

#!/bin/bashecho "环境变量=待填写" >> ~/.bashrc
source ~/.bashrcpip install -r requirements.txt# 获取当前脚本的绝对路径
SCRIPT_PATH="$(readlink -f "$0")"
# 获取脚本所在的目录
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"# 检查python脚本是否存在
PY_SCRIPT="$SCRIPT_DIR/script.py"echo $PY_SCRIPTif [ -f "$PY_SCRIPT" ]; then# 获取当前crontab内容,并追加新作业echo "0 9 * * * /usr/bin/python3 $PY_SCRIPT" | crontab -echo "Cron job for $PY_SCRIPT has been set."
elseecho "Error: $PY_SCRIPT does not exist."exit 1ficrontab -l

如果你有更复杂的软件依赖,环境设置等,建议通过ubuntu的基础镜像构建本地镜像并打包发布,这样给别人的时候可以一键运行。dockerfile如下

# 使用Ubuntu最新LTS版本作为基础镜像
FROM ubuntu:24.04# 安装Python 3和必要的工具
RUN apt-get update && apt-get install -y \python3 \python3-pip \cron \vim \&& rm -rf /var/lib/apt/lists/*# 设置Python 3为默认的Python版本
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
RUN update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1## 设置环境变量
ENV LANG C.UTF-8
ENV PYTHONUNBUFFERED=1# 拷贝宿主机文件到镜像中
COPY *.py /app
COPY requirements.txt /app
WORKDIR /app# 安装requirements.txt中指定的Python依赖
RUN python -m pip install  -r /app/requirements.txt --break-system-packages# 设置每天12点的定时任务
RUN (crontab -l ; echo "0 12 * * * /usr/bin/python3 /app/your_script.py") | crontab

上述dockerfile可在目录下cmd中通过如下命令构建并运行:

docker build -t you_image_name .

docker run -it you_contaner_name you_image_name 

 使用以下命令将构建的镜像保存为 tar 文件(假设镜像名称为 "my-python-app"):

docker save -o my-python-app.tar my-python-app 

接收者收到 tar 文件后,可以使用以下命令加载镜像: 

docker load -i my-python-app.tar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java编程常见问题汇总二

系列文章目录 文章目录 系列文章目录前言一、请使用XML解析器二、请使用JDom组装XML三、XML编码陷阱四、未指定字符编码五、未对数据流进行缓存 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…

解决 git 命令 Problem with the SSL CA cert (path? access rights?)

/etc/pki/nssdb 错误 运行命令: GIT_CURL_VERBOSE1 git clone git_repo_url 会输出详细错误信息 Cloning into fp_sdk... * Couldnt find host xxx.com in the .netrc file; using defaults * About to connect() to xxx.com port 443 (#0) * Trying 10.44.52.7…

k8s系列-Listen: listen tcp :53: bind: permission denied

要解决 coredns 无法绑定到低于 1024 的端口(如端口 53)的权限问题,可以通过启用 containerd 的配置选项来允许非特权端口绑定。具体步骤如下: 1. 编辑 containerd 配置文件 打开 containerd 的配置文件 /etc/containerd/config…

跨平台,不需要下载的串口调试助手

在线串口调试助手是BBAIoT旗下的首款物联网工具,web端显示,不需要下载任何软件到电脑,方便快捷。 在线串口调试 链接地址:在线串口调试在线串口调试助手 Online serial port debugging assistanthttps://www.bbaiot.com/ 软件界…

强引用 软引用 弱引用 虚引用 以及WeakHashMap简单介绍

一:强引用 软引用 弱引用 虚引用 1:强引用 强引用是最常的引用方式: Integer a = 1变量a强引用Integer对象为1值,任何对象被强引用不会被垃圾回收掉。 2:软引用 一个对象是软引用且不可达,不会被垃圾回收器回收直到jvm虚拟机内存不够时候,下面创建软引用案例: In…

重新定义你的上网体验,微软WowTab助你一臂之力!

大家好,我是 Java陈序员。 浏览器是我们日常生活工作中必备的工具软件,使用非常频繁。 目前很多浏览器的新标签页虽然说功能齐全,但是充斥着广告和各种无效的信息,十分影响体验! 今天,给大家安利一个浏览…

常用ai模型和一些术语的科普

本文是早年浏览easyai.tech后留下的笔记。 文章目录 神经网络CNNRNNGANKNNCPU和GPU/TPUNLPNo free lunch theoremtransformer注意力机制自动编码器,自编码器GNN推荐系统附录NFL的两个例子 神经网络 水流,水龙头,流量阀。 可以回想CNN分类MNI…

软件磁盘阵列与LVM

一、软件磁盘阵列 磁盘阵列(RAID)是通过硬件或软件技术将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘除了存储还具备数据保护功能。 RAID分不同的级别,不同级别具有不同功能: 1、RAID 0:…

调用阿里云智能云实现垃圾分类

目录 1. 作者介绍2. API3. 阿里云API垃圾分类业务4. 实验过程4.1 接入阿里云4.2 创建并获取AccessKey ID和Secret4.3 登录阿里云官网,搜索垃圾分类技术文档4.4 配置环境变量4.5 代码部分 1. 作者介绍 孙作正,男,西安工程大学电子信息学院&am…

初中英语优秀作文分析-003My Favorite Movie Type-我最喜欢的电影类型

PDF格式公众号回复关键字:SHCZYF003 记忆树 1 I’d like to share my favorite movie type with you. 翻译 我想和你分享我最喜欢的电影类型。 简化记忆 电影类型 句子结构 I 主语 我,would 情态动词 愿意做某事,like 谓语 喜欢,to sha…

docker部署skywalking

skywalking版本下载 1:拉取skywalking的oap镜像(可以选择自己的版本,最好与ui,agent版本一致) docker pull apache/skywalking-oap-server:9.5.02:启动oap docker run -d -p 11800:11800 -p 12800:12800 --name sw_oap apache/…

蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM)

国赛考了一个方波,第一次考这个,连个示波器都没有 CUBMX配置: 按上述配置刚好是32MHZ / 32 / 100 1KHZ 理论: 频率:就是一秒钟能产生多少个脉冲,如下图: 这算是一个脉冲,1KHZ说明一秒钟产生1…

STM32使用HAL库UART接收不定长数据-1

使用STM32的HAL库实现UART串口不定长数据的接收 使用STM32的UART接收数据的时候,经常会遇到接收长度不固定的数据,比如一帧数据可能是10个字节,也可能是12个字节。这种数据称为不定长数据。 现有的很多通信协议是不定长的,比如mo…

Docker大学生看了都会系列(一、Docker介绍)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 文章目录 前言Docker容器简介什么是Docker容器为什么要用Docker容器Docker容器的特性Docker容器对比VM(虚拟机)Docker容器三大组成要素镜像容器镜像仓库 Docker容器运行流程…

gradle构建项目简单入门

gradleProject 搭建gradle项目步骤 官网文档地址:https://docs.gradle.org/current/userguide/userguide.html Getting Started 1.Gradle核心内容 1.Gradle介绍 Project:类似模块划分Build Scripts:构建ProjectDependency Management&…

多线程新手村5--线程池

1.1 线程池是什么 线程诞生的意义是因为进程的创建/销毁开销太大,所以使用线程提高代码的执行效率;那如果想要进一步提升执行效率,该怎么办呢?有一个方法是使用线程池。 首先,什么是线程池:池就是池子&am…

Vue——样式绑定的几种方式

文章目录 前言往期回顾绑定对象绑定对象的另一种写法绑定数组数组与对象的嵌套 前言 样式绑定在vue中属于一种很常见的操作。在之前博客中针对样式的绑定操作,介绍了一个指令v-bind。缩写为:xxx。 vue 官网 样式绑定 往期回顾 先简单回顾下最开始绑定标签样式的操…

vue3_组件间通信方式

目录 一、父子通信 1.父传子( defineProps) 2.父传子(useAttrs) 3.子传父(ref,defineExpose ) 4.子传父(defineEmits) 5.子传父(v-model) …

车载测试面试题专题 - 如何测试蓝牙电话功能

现代车载系统中,蓝牙电话功能已经成为了一个必不可少的功能。它不仅提高了驾驶安全性,还提供了极大的便利性。作为车载行业的测试人员,如何全面、有效地测试车载蓝牙电话功能是我们工作的重要部分。因此在车载测试的面试过程中,蓝…

k8s怎么监听自定义资源的变更?(1)

这里我们通过 k8s的 code-generate来生成操作自定义资源的代码来监听变更 第一步下载工具 下载安装 k8s code-generate 查看我们的k8s版本 kubectl get node 输出结果为 可以看到我们的k8s版本为 v1.22.0 所以此时我们要下载与之对应的版本的code-generate git clone htt…