1

わかりましたので、毎晩バックアップのためにいくつかの録音ファイルをリモートサーバーに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

どんな助けでも大歓迎です。これが最善の方法ではない可能性があることは理解しています。これは、私が最初に見つけた方法であり、私にとってはうまくいったので、どんな提案も受け付けています。

4

1 に答える 1

0

たとえば、ftpそこにインストールされている場合は、PATH 変数を確認して /usr/local/bin を追加することをお勧めします。

また、追加

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

cronjob が失敗する理由 (または少なくとも何もしない理由) に関する詳細情報を提供します。

cronjob コマンドにプレフィックスを付けてみてください

bash -x ...

実行中のすべてのシェルステートメントを表示します。

完全な crontab 行:

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

これが問題のデバッグに役立つことを願っています。

于 2013-09-09T10:45:48.110 に答える