我的脚本首先执行两个python脚本,将传感器的温度写入文件,然后通过ftp从.sh文件中上载。在
由于某些原因,温度只在我手动运行.sh文件时才更新。当crontab运行脚本时,它只上载ftp,但它似乎不运行python脚本,除了take_图片. 在
ftp.sh文件:
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
温度_文件.py
^{pr2}$Crontab:
*/5 * * * * /root/ftp.sh
>> If I run the script manually everything works perfectly
您可以在/root中包含.bash_配置文件/ftp.sh文件在运行任何命令之前。在
. /root/.bash_profile
对于cron jobs,我经常遇到这样的问题。当概要文件处于活动状态时,在shell中测试它们,当cron作业运行时,环境(路径和其他东西)不可用。在
我看了你的两个脚本,第一个脚本只使用OS命令,而第二个脚本调用temperpoll,这可能对cron job不可用。在
大多数情况下,出现此问题的原因是脚本文件权限和脚本文件的所有权。我也面临同样的问题。我发现我的股票所有者不是超级用户
e.g. root.
因此,您必须将您的脚本的权限和所有权设置为超级用户。在下面找到。在
首先,以超级用户的身份编辑crontab。在
并保存crontab
:wq!
现在设置脚本的权限
^{pr2}$现在重新启动crontab。在
您的
ftp.sh
脚本中是否有一个shebang,即它是否以您没有在此处显示的#!/usr/bin/env bash
行开头?在如果没有,您需要添加它,或者在crontab中运行
bash /root/ftp.sh
。否则脚本将无法正确执行。在相关问题 更多 >
编程相关推荐