Arch Linux 定时运行python脚本(crontab)

本文详细介绍了如何在ArchLinux上安装Python,创建和管理虚拟环境,使用pip安装和管理包,以及如何编写shellscript控制Python程序并配置cron定时任务,包括cronie的安装、定时任务设置和常见问题解决。
摘要由CSDN通过智能技术生成

环境
Arch Linux
官网https://wiki.archlinux.org/

一、python

1.1 安装python

安装python

pacman -S python

1.2 python虚拟环境

使用pip进行python package management

# 在当前目录下创建一个venv 叫做envname
$ python -m venv envname
# 激活envname的python环境
$ source envname/bin/activate
# 在envname环境下进行操作
(envname) $ pip list
# 退出envname环境
(envname) $ deactivate
$ 

1.2.1 使用pip管理包

# 在envname环境下进行操作
(envname) $ pip install numpy
(envname) $ pip list

1.2.2 运行python程序

# 在envname环境下进行操作
(envname) $ python mypycode.py

1.3 编写一个简单的python程序

一个运行就会记录当前时间的程序record_timestamp.py

# 一个运行就会记录当前时间的程序
import datetime

f=open(r"/home/rebecca/pyProjects/record_timestamp/src/record.txt", 'a', encoding='utf-8')

current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

f.write(current_time + '\n')

二、编写shell script脚本控制python程序的运行

为了程序精准,下面全部使用绝对路径。这意味着程序一旦启用,就不能移动文件的位置。

2.1 建立目录用于存放程序文件

假设当前已经创建好了一个venv名字叫做record_timestamp

在这里插入图片描述
进入venv的根目录,创建一个名字叫src的文件夹,专门用来放python程序的文件。随便叫啥名字,我就给它起了一个src,反正当前路径下没有一个叫src的目录。

$ cd /home/rebecca/pyProjects/record_timestamp
$ mkdir src

把1.3 的record_timestamp.py文件放在该目录下

2.2 编写shell script脚本

编写shell script脚本
record.sh

#!/bin/bash

source /home/rebecca/pyProjects/record_timestamp/bin/activate
python /home/rebecca/pyProjects/record_timestamp/src/record_timestamp.py
deactivate

三、安装并配置cron

有很多种选项https://wiki.archlinux.org/title/Cron,本案例使用cronie。

3.1 安装

root用户

pacman -S cronie

3.2 配置定时任务

3.2.1 设置每分钟执行一次

普通用户哦!

# 查看当前已有的定时任务
crontab -l
# 编辑定时任务
crontab -e

编辑配置定时任务,具体规则
参照1https://linux.vbird.org/linux_basic/centos7/0430cron.php#crontab
参照2https://wiki.gentoo.org/wiki/Cron

配置一个“每分钟执行一次”

crontab -e
*/1 * * * * . /home/rebecca/pyProjects/record_timestamp/src/record.sh

保存退出

3.2.2 报错

参照1https://wiki.archlinux.org/title/Bash
参照2https://stackoverflow.com/questions/21848801/cant-edit-crontab

no crontab for ec2-user - using an empty one
/bin/sh: /usr/bin/vi: No such file or directory
crontab: "/usr/bin/vi" exited with status 127

在/home/rebecca 家目录下创建.bashrc文件

cd /home/rebecca
vim .bashrc

编辑文件,添加内容:

export EDITOR=/usr/bin/vim

3.3 启动cron服务

# 启动
systemctl start cronie.service
# 停止
systemctl stop cronie.service

# 开启开机自启动
systemctl enable cronie.service
# 关闭开机自启动
systemctl disable cronie.service

# 查看当前服务状态
systemctl status cronie.service

3.4 定时任务执行结果

cat /home/rebecca/pyProjects/record_timestamp/src/record.txt

结果
在这里插入图片描述

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值