首页 > 解决方案 > Python 脚本在 crontab 的 int() 转换中存在问题

问题描述

我正在检查我的树莓派的内存。工作没问题。

但是当我想每分钟运行一次时,crontab 说将字符串转换为 int

ValueError: invalid literal for int() with base 10: ''

My script.py时出错:

intmemused = 0
cmd = "top -n1 | grep 'Mem :'| awk '{print $6;}'"
output = Popen(cmd,shell=True, stdout=PIPE)
memused = output.communicate()[0].strip()
memused = str(memused.decode("utf-8"))
print(memused) |-----------> 589020
intmemused = int(memused) #Error when crontab execute my scrypt
mem = intmemused * 100
mem = float(mem) / float(memtot)
mem = 100 - float(mem)
mem = round(mem,2)



我的crontab
*/1 * * * * /home/dietpi/<b>info.sh</b> 2>/home/dietpi/marseille.log

我的info.sh

#!/bin/bash
/usr/bin/python3 /home/dietpi/script.py



marseille.log它创建以在 crontab 执行时记录错误,其中包含:

TERM environment variable not set.
Traceback (most recent call last):
File "/home/dietpi/config", line 56, in <module>
    intmemused = int(memused)
ValueError: invalid literal for int() with base 10: ''

当我看到这个错误时,我相信memused是空的,但不是。打印589020
我相信空白字符,但我使用了 .strip()
我相信未设置 TERM 环境变量。这是一个问题,但是使用此命令集 | grep TERM有一个很好的答案TERM=xterm

我不明白为什么它适用于 python3 而不是 crontab

你能帮帮我吗?

非常感谢 !

马克斯奎格

标签: memorycronraspberry-pi3python-3.5

解决方案


推荐阅读