linux - FTP Shell 脚本不适用于 Cronjob

标签 linux shell ftp cron

好的,所以我正在尝试每晚将一些录音文件通过 ftp 传输到远程服务器进行备份。它获取今天创建的文件并传输它们。它工作得很好,但前提是我手动运行它。 cronjob 不运行它。

这是当前脚本:

#!/bin/bash
touch -t $(date +"%Y%m%d0000") /tmp/$$

NOW=$(date +"%d-%m-%Y")
HOST='remote_server'  
USER='ftp_user'             
PASS='ftp_password'          

#create directory with date as the name, copy recordings.php for interface
ftp -inv $HOST << EOF
user $USER $PASS
mkdir /recordings/$NOW
cd /recordings/$NOW
put recordings.php
bye
EOF

find  -name '*.mp3' -newer /tmp/$$ |
while read FILE
do
ftp -in $HOST << EOF
user $USER $PASS
cd /recordings/$NOW
put $FILE
bye
EOF

done

rm -f /tmp/$$

然后我像这样在 crontab 中设置它,所以它在每晚 11 点运行:

* 21 * * * /var/spool/asterisk/monitorDONE/MP3/recording_script.sh

非常感谢大家的帮助。我知道这可能不是最好的方法,这只是我遇到的第一种对我有用的方法,所以我愿意接受任何建议。

最佳答案

您可能需要检查您的 PATH 变量并将/usr/local/bin 添加到其中,例如,如果 ftp 安装在那里。

此外,添加

... > /tmp/script.log 2>&1

将提供有关 cronjob 失败原因的更多信息(或至少不执行任何操作。

尝试在您的 cronjob 命令前加上

bash -x ...

在执行时显示每个 shell 语句。

完整的 crontab 行:

* 21 * * * bash -x /var/spool/asterisk/monitorDONE/MP3/recording_script.sh >/tmp/rs_log 2>&1

希望这有助于调试您的问题。

关于linux - FTP Shell 脚本不适用于 Cronjob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691014/

相关文章:

linux - bash 自动完成

linux - 将运行时日志存储在文件夹中

qt - #include <QFtp> 中出现错误我该怎么办

PHP - 获取上传文件传输完成的时间戳

swift - Linux 导出路径错误替换

linux - 从 bash 中的文件内容设置变量(循环)

bash - 如何使用 sed 或 grep 替换整个字符串

c# - 用于 FTP 的文件系统观察器

linux - ZONE_HIGHMEM 在 32 位 x86 内核地址空间中的映射

linux - 在 Linux 中获取 TCP RTT