【发布时间】:2013-09-09 03:16:36
【问题描述】:
好的,所以我每天晚上都在尝试将一些录音文件 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
非常感谢任何帮助。我知道这可能不是最好的方法,这只是我遇到的第一个对我有用的方法,所以我愿意接受任何建议。
【问题讨论】:
-
cronjob是完全没有运行还是没有运行成功?
-
方法看起来没问题。 record_script.sh 是可执行文件吗?对其执行 chmod 755 recording_script.sh 并再次通过 cron 运行它。检查 cron 日志文件以查看作业的输出。 Cron 日志可能在 /var/log 或 var/log/syslog 下
-
这是 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) NULL security context for user, but SELinux in permissive mode, continuing () -
所以脚本在它应该运行的时候运行。它为文件创建新目录,只是不复制任何文件。
-
没有路径部分的 find 语句是故意的吗?从 cronjob 执行时,
find可能会在其他地方执行。