linux的cron定时任务踩坑记录——运行python文件

Cron简介


Cron是Unix和类Unix操作系统(如Linux)中的一种工具,用于在特定时间执行预定的命令或脚本。Cron是一个守护进程,一旦系统启动,它就会一直运行。

Cron的主要优点是,它允许系统管理员安排在固定时间、日期或间隔执行的作业。例如,你可以设置一个作业,每天凌晨3点备份所有用户的主目录。

Cron使用一个配置文件,称为crontab(cron table)文件。每个用户都可以有自己的crontab文件,而系统管理员则可以使用/etc/crontab文件来设置系统级的作业。

Crontab文件的每一行都代表一个作业,包含了作业执行的时间和日期信息,以及要执行的命令或脚本。时间和日期信息的格式是:分钟(0-59),小时(0-23),每月的某天(1-31),月份(1-12),每周的某天(0-7,0和7都代表星期日)。

例如,下面的crontab条目将在每天凌晨3点30分执行/home/user/backup.sh脚本:

30 3 * * * /home/user/backup.sh

Cron还提供了一些特殊的字符串,如@reboot(每次启动时运行)、@yearly(每年运行一次)、@monthly(每月运行一次)、@weekly(每周运行一次)、@daily(每天运行一次)、@hourly(每小时运行一次)。
## Cron无法运行Python脚本问题
我遇到的问题,为了避免边缘设备断电或摄像头偶尔断开连接导致python脚本无法正常运行拉流,我利用容器运行整个流程,将容器设置为自启,同时利用Cron服务定时运行拉流的脚本。但是问题就来了,Cron无法运行这个python脚本,其间考虑过各种原因,比如宿主机和容器的linux发行版本不一致,Cron服务安装失败等,最终确定原因是"**Cron运行命令时的环境或这说上下文与shell不是一样的**",以下是纠错过程。
crontab文件中的命令如下:

```bash
* * * * * bash /path/to/main.sh
```
main.sh中如下:

```bash
python3 /path/to/test.py
```
test.py导入了mariadb包,因为需要操作数据库。

启动Cron服务后,利用 ps -ef 命令并没有显示有任何拉流进程,但是并没有报错,这一点迷惑了好久,可能这就是Cron的机制吧,能运行就运行,不能运行就不能,至于什么原因报什么错,不会有任何反馈

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葉相惜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值