Linux FTP Shell脚本不能与Cronjob一起使用

Linux FTP Shell脚本不能与Cronjob一起使用,linux,shell,ftp,cron,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' #

好的,所以我每天晚上都试图将一些录音文件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/$$

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

如果安装了
ftp
,您可能需要检查PATH变量并将/usr/local/bin添加到其中

此外,加入

... > /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

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

cronjob根本没有运行还是没有成功运行?该方法看起来正常。record_script.sh是否可执行?在其上执行chmod 755 recording_script.sh,然后再次通过cron运行。检查cron日志文件以查看作业的输出。cron日志可能位于/var/log或var/log/syslogthis下当cron尝试运行脚本时,日志显示的内容:
Sep 8 21:04:01 vici crond[16478]:(root)CMD(/var/spool/asterisk/monitorDONE/MP3/recording_script.sh)Sep 8 21:04:01 vici crond[16477]:(root)用户的安全上下文为空,但SELinux处于许可模式,继续()
因此脚本会在它应该运行的时候运行。它会为文件创建新的目录,它不会复制任何文件。没有路径部分的find语句是故意的吗?
find
在从cronjob执行时可能会在其他地方执行。太棒了。使用该调试,我能够解决我的问题。在find之前语句和while循环,我不得不cd到我正在搜索的文件夹(
/var/spool/asterisk/monitorDONE/MP3/
),然后它运行得很好。谢谢大家。
* 21 * * * bash -x /var/spool/asterisk/monitorDONE/MP3/recording_script.sh >/tmp/rs_log 2>&1