Python Crontab只运行我脚本的一部分
我的脚本首先执行两个python脚本,将传感器中的温度写入文件,然后通过ftp从.sh文件中上传 由于某些原因,只有在手动运行.sh文件时,温度才会更新。当crontab运行脚本时,它只上传ftp,但除了take_pic.py之外,它似乎没有运行python脚本Python Crontab只运行我脚本的一部分,python,linux,sh,crontab,Python,Linux,Sh,Crontab,我的脚本首先执行两个python脚本,将传感器中的温度写入文件,然后通过ftp从.sh文件中上传 由于某些原因,只有在手动运行.sh文件时,温度才会更新。当crontab运行脚本时,它只上传ftp,但除了take_pic.py之外,它似乎没有运行python脚本 crontab是从根目录的crontab执行的 python文件是可执行的 日志文件没有显示任何内容 如果我手动运行脚本,一切都会完美运行 ftp.sh: echo "Run :$(date)" >> python_temp
echo "Run :$(date)" >> python_temp.log
python write_temp.py >> python_temp.log
python temp_to_file.py >> python_temp_to_file.log
#raspistill -o snapshot2.jpg -n -w 1280 -h 720
python takePic.py
sleep 3
HOST=XX #This is the FTP servers host or IP address.
USER=XX #This is the FTP user that has access to the server.
PASS=XX #This is the password for the FTP user.
NOW=$(date +"%c")
# echo beginne upload
touch work
ftp -inv $HOST << EOF
user $USER $PASS
cd /bilder/
put snapshot2.jpg
rename snapshot2.jpg snapshot.jpg
put temp.js
bye
EOF
# echo erfolgreicher upload
Crontab:
*/5 * * * * /root/ftp.sh
您的
ftp.sh
脚本中是否有shebang,即它是否以#开头/usr/bin/env bash
行,您没有在这里显示吗
如果没有,则需要添加它,或者在crontab中必须运行
bash/root/ftp.sh
。否则,您的脚本将无法正确执行。此问题主要是由于脚本文件权限和脚本文件所有权引起的。我也面临同样的问题。我发现我的纸条所有者不是超级用户,例如root。
因此,您必须将您的纸条的权限和所有权设置为超级用户。在下面找到
首先,以超级用户身份编辑crontab
[abc@host] crontab -e
并保存crontab:wq代码>
现在为脚本设置权限
[abc@host] chmod +x script.sh
[abc@host] chown root:root script.sh
现在重新启动crontab
[abc@host] /etc/init.d/crond restart
>如果我手动运行脚本,一切都会正常运行
在运行任何命令之前,可以将.bash_配置文件包含在/root/ftp.sh中
/root/.bash\u配置文件
我经常在cron jobs中遇到这样的问题。当概要文件处于活动状态时,在shell中测试它们,当cron作业运行时,环境(路径和其他内容)不可用
我查看了您的两个脚本,第一个脚本仅使用OS命令,但第二个脚本调用Temple poll,这可能对cron job不可用。python解释器可能无法找到takePic.py脚本
因为cronjob是在用户主目录中执行的(例如:/home/myuser/)。因此,请使用脚本的完整路径:
python /some/path/takePic.py >> /some/path/python_temp.log
同时发布您的crontab语法。你经历过吗?有很好的调试信息。我认为问题在于子流程检查输出不适用于crontab。您可能需要使用完整路径,因为crontab不知道它在哪里运行。检查我提供的链接,这里有很好的信息。问题是,正如我所说的,上传每5分钟就会像一个符咒一样工作。所以我认为这不是问题。如果你想解决这个问题,你可以尝试做一些研究。我向你指出了一些资源,但你似乎没有检查它们。如果您认为crontab中没有问题,那么只需删除crontab标记,这样我们这些对crontab有一定了解的人就不会感到麻烦了
python /some/path/takePic.py >> /some/path/python_temp.log