由cron启动的.sh不通过python创建文件

由cron启动的.sh不通过python创建文件,python,shell,cron,Python,Shell,Cron,我有一个启动python文件的.sh。此python文件在通过sudo命令行启动时生成.txt,但在通过.sh启动时不会生成 为什么pyhton文件在以cron和.sh开头时不给我一个.txt 当我使用su-c“python/var/www/html/readdht.py>/var/www/html/dhtdata.txt”2>&1>/dev/null时,.sh给我输出,但省略了换行符,所以我得到一个大字符串 当从命令行使用sudo python readdht.py启动时,python文件将正

我有一个启动python文件的.sh。此python文件在通过sudo命令行启动时生成.txt,但在通过.sh启动时不会生成

为什么pyhton文件在以cron和.sh开头时不给我一个.txt

当我使用
su-c“python/var/www/html/readdht.py>/var/www/html/dhtdata.txt”2>&1>/dev/null
时,.sh给我输出,但省略了换行符,所以我得到一个大字符串

当从命令行使用
sudo python readdht.py
启动时,python文件将正确创建.txt

如果.sh文件以
su-c“python/var/www/html/readdht.py
no.txt开头,则会创建python文件


发生了什么事?

如果你的环境没有更多的色彩,很难回答

下面是解决这个问题的方法:不要将输出重定向到/dev/null。然后在cron日志中读取发生的情况。脚本很可能失败,因此不会将任何内容返回到标准输出,因此不会创建文件

我高度怀疑这是因为您使用的是加载到bashrc中的python模块、python版本或python路径。Crontab不执行bashrc,它是一个独立的环境,因此您不能假设手动启动时正确运行的脚本可以在cron中工作


尝试在cron任务中寻找bashrc,它很可能解决您的问题。

如果您的环境没有更多颜色,很难回答

下面是解决这个问题的方法:不要将输出重定向到/dev/null。然后在cron日志中读取发生的情况。脚本很可能失败,因此不会将任何内容返回到标准输出,因此不会创建文件

我高度怀疑这是因为您使用的是加载到bashrc中的python模块、python版本或python路径。Crontab不执行bashrc,它是一个独立的环境,因此您不能假设手动启动时正确运行的脚本可以在cron中工作

尝试在cron任务中寻找bashrc,它很可能解决您的问题