编辑已解决如何在 crontab 中执行 bash 脚本?

问题描述 投票:0回答:2

我正在尝试将 2 个 csv 文件从一个 Pi 发送到另一个 Pi。

我有一个 shell 脚本可以执行此操作,并且在终端中执行时工作得非常好。但是当我在 crontab 中运行脚本时,它不起作用。

我在终端中输入要运行的内容:

bash fileTX.sh

这可以完美地传输到另一个 Pi!!

用于传输文件的 bash 脚本:

#!/bin/bash

password="mypassword"
username="myusername"

ip="111.11.11.11"

while :
do
   sshpass -p "$password" scp /home/pi/csv1.csv $username@$ip:/home/pi/Desktop
   sshpass -p "$password" scp /home/pi/csv2.csv $username@$ip:/home/pi/Desktop
   echo "Files Transmitted!!"
   sleep 30
done

再次,在终端中这有效!在 crontab 中它不起作用

在 crontab 中:

@reboot /home/pi/fileTX.sh &

请问有人看到问题出在哪里吗?!

我试过了 使 shell 脚本成为可执行文件,给出所有内容的完整路径,在 crontab 中尝试了一堆前缀变体,例如脚本路径之前的“sh”和“bash”以及“/bin/bash”

请参阅下面我的回答,我是如何解决这个问题的!

cron raspberry-pi sh scp cron-task
2个回答
0
投票

您可以尝试将 cron 条目更改为

@reboot /bin/bash /home/pi/fileTX.sh &

只是为了确保您使用的是 bash 来执行。


0
投票

大家好,我想通了,我希望这可以帮助任何尝试做同样事情的人!

我从 crontab 读取了输出日志,这是一个已知的主机问题。 所以我找到了如何在 shell 脚本中嵌入禁用主机检查。

所以在fileTX.sh中:

#!/bin/bash

password="mypassword"
username="myusername"
ip="111.11.11.11"

while :
do
   sshpass -p "$password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /home/pi/csv1.csv $username@$ip:/home/pi/Desktop
   sshpass -p "$password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /home/pi/csv2.csv $username@$ip:/home/pi/Desktop
   echo "Files Transmitted!!"
   sleep 30
done

在 crontab 中,我做到了

@reboot /bin/bash /home/pi/fileTX.sh &

现在可以了!!高兴吧!!!

© www.soinside.com 2019 - 2024. All rights reserved.