如何制作一个cronjobbable脚本来上传时钟?

时间:2009-09-30 22:42:18

标签: bash shell scripting

我在这里问了一个类似的问题:(Upload clocking script),但后来改变了它并意识到这是一个不同的问题。

我想创建一个名为uploadtimer.sh的脚本,它将文件上传到各个主机,然后记录上传在日志文件中的时间。感谢那些帮助过我的人,我有一个部分解决方案,但我被困住了:

我用它作为crontab(在上午11点之后的前十分钟进行测试)

1,2,3,4,5,6,7,8,9,10     11     *     *     *          /usr/bin/time -a /usr/local/apache/sites/$MYEMPLOYER/upload_test/output.log  /usr/local/apache/sites/$MYEMPLOYER/upload_test/uploadtimer.sh

upload_test /包含这些文件:

upload_test / output.log upload_test / uploadtest.gif upload_test / uploadtimer.sh

output.log是我重命名为.log文件的文本文件。这是空白的。在我把它放在那里之前,我收到的消息说“这个文件不存在”。我认为它会为我创造一个,但我猜不是。在我创建它之后,它一直在crontab邮件中说,在我更改其权限之前我无法写入它,所以我做了。

uploadtest.gif是一个gif

uploadtimer.sh是这样的:

#!/bin/sh

HOST='--myhost--'
USER='--login--'
PASSWD='--password--'
FILE='uploadtest.gif'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE

quit
END_SCRIPT
exit 0

cron发给我的信息是:

0.00user 0.00system 0:00.02elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+253minor)pagefaults 0swaps

但是没有ftp发生,也没有写在output.log中。

3 个答案:

答案 0 :(得分:0)

创建另一个运行第二个命令的脚本。从cron调用第二个脚本。

您需要确保使用绝对路径进行翻转,因为cron在与脚本不同的目录中启动。

答案 1 :(得分:0)

您的问题:

  • 我在哪里放置这部分,告诉它将数据保存到日志中?

    编辑crontab文件以添加cron条目。 cron条目包含有关运行什么命令以及何时运行它的信息。例如,以下是您可能使用的cron条目:

    0 2 * * * /usr/bin/time -a ~/output.log ~/uploadtimer.sh

    此条目表示每天凌晨2点运行命令(分钟0,小时2,每月的每一天,每个月,每周的每一天)。有关crontab语法的详细信息,您可以查看http://www.adminschoice.com/docs/crontab.htm

    要创建一个cron条目,请使用命令crontab -e,它将加载一个vi文本编辑器。输入上面的行然后保存。这创建了cron作业。如果您不了解vi,请按照以下步骤操作:

    • 从shell中输入crontab -e开始编辑
    • i 进入插入模式
    • 按上述方式输入
    • ESC 退出插入模式
    • 切换到命令模式 - 您将看到光标位于屏幕底部
    • 输入 wq 并点击 Enter - 此 W 礼, Q 符合该文件。您应该会看到crontab: installing new crontab之类的消息。

    如果使用vi遇到任何问题,请使用 ESC 几次退出它所处的模式,执行进入命令模式,然后 q!强制退出(即退出而不保存任何内容),然后从头开始重试。

  • 它是指脚本本身所以它需要与脚本分开吗?

答案 2 :(得分:0)

您可能需要查看“ncftp”。它会将你的上传命令压缩成“ncftpput -u $ USER -p $ PASSWD $ HOST / $ FILE”,然后根本就不需要脚本,只需将整个命令放入你的crontab:

0 2 * * * /usr/bin/time -a ~/output.log ncftpput -u $USER -p $PASSWD $HOST / $FILE