Crontab只运行我的脚本的一部分

2024-09-30 06:13:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的脚本首先执行两个python脚本,将传感器的温度写入文件,然后通过ftp从.sh文件中上载。在

由于某些原因,温度只在我手动运行.sh文件时才更新。当crontab运行脚本时,它只上载ftp,但它似乎不运行python脚本,除了take_图片. 在

  1. crontab是从根目录的crontab执行的。在
  2. python文件是可执行的
  3. 日志文件不显示任何内容
  4. 如果我手动运行脚本,一切都会完美运行

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

Tags: 文件thetopyecho脚本logsh
3条回答

>> 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。在

[abc@host] crontab -e

并保存crontab :wq!

现在设置脚本的权限

^{pr2}$

现在重新启动crontab。在

[abc@host] /etc/init.d/crond restart

您的ftp.sh脚本中是否有一个shebang,即它是否以您没有在此处显示的#!/usr/bin/env bash行开头?在

如果没有,您需要添加它,或者在crontab中运行bash /root/ftp.sh。否则脚本将无法正确执行。在

相关问题 更多 >

    热门问题