【问题标题】:Moving Files from FTP to Local via linux every second每秒通过 linux 将文件从 FTP 移动到本地
【发布时间】:2016-08-08 08:21:31
【问题描述】:

亲爱的,

我想在 linux Crowntab 中进行计划作业,将文件从 FTP 目录移动(剪切)到本地目录。这不是一次,应该每秒都这样做而不停止。 非常感谢你们。

【问题讨论】:

  • 这似乎不太可能是解决任何问题的最佳方法 - 请退后一步,想想你真正想要实现的目标。

标签: linux ftp crontab file-moving


【解决方案1】:

你可以做一个循环,但你不能用 crontab 来做,因为你只能每分钟触发一次。您可以尝试的另一个选项是执行 60 个 crontab 并执行此操作

* * * * * sh path/to/your/script
* * * * * sleep 1 && sh path/to/your/script
* * * * * sleep 2 && sh path/to/your/script
* * * * * sleep 2 && sh path/to/your/script
.
.
.
* * * * * sleep 59 && sh path/to/your/script

你可以做的另一件事是

while true;
do sh path/to/your/script &
sleep 1
done

这种方法你必须在每次重启时启动轮询器。

编辑

假设您的脚本名为 ftp_poller.sh,并且您将其放在主脚本文件夹中,我们将其命名为 (/home/fitipaldi/scripts/ftp_poller.sh)

ftp_poller.sh 内容

 #/bin/bash
file=filename
server="example.com"
folder="where_is_the_file" #If it's in the root folder type /
user="username"
pass="supersecretpassword"
 /usr/bin/ftp -n << EOF
 open ${server}
 user ${user} ${pass}
 binary
 cd ${folder}
 get ${file}
 del ${file}
 EOF

你可以这样做:

* * * * * sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 1 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 2 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 3 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 4 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 5 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 6 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 7 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 8 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 9 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 10 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 11 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 12 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 13 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 14 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 15 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 16 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 17 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 18 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 19 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 20 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 21 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 22 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 23 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 24 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 25 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 26 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 27 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 28 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 29 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 30 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 31 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 32 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 33 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 34 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 35 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 36 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 37 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 38 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 39 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 40 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 41 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 42 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 43 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 44 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 45 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 46 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 47 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 48 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 49 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 50 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 51 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 52 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 53 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 54 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 55 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 56 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 57 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 58 && sh /home/fitipaldi/scripts/ftp_poller.sh
* * * * * sleep 59 && sh /home/fitipaldi/scripts/ftp_poller.sh

好吧,这太疯狂了,我不建议你使用这个解决方案

但你有另一个解决方案,我认为要好得多

while true;
do sh /home/fitipaldi/scripts/ftp_poller.sh
sleep 1
done

此方法将触发 ftp_poller.sh 脚本,完成后将等待 1 秒并再次触发。

如果您不关心进程是否需要超过 1 秒的时间,并且您希望很多进程执行相同的操作,那么您可以这样做

while true;
do sh /home/fitipaldi/scripts/ftp_poller.sh &
sleep 1
done

此方法将触发 ftp_poller.sh 脚本并将其置于后台,然后将休眠 1 秒并再次无限触发。

【讨论】:

  • 您能否详细描述一下,因为我是这方面的新手,您的答案对我来说不清楚。谢谢
  • 嗯,我觉得这并不复杂。您有 2 种方法: 1-> 每秒执行一次 cron 作业,并延迟 +1 秒调用脚本。 2-> 手动执行一次脚本,然后在无限循环中将其留在后台。要小心,因为这样如果 1 个进程没有在 1 秒内完成工作,那么您将有 2 个进程在做同样的事情......真的我建议使用第二个选项,但不要将每个工作都放在后台(从命令行中删除 &)。我更新我的答案 1 秒。
  • 感谢重播。如何连接到 FTP 地址?如何提及目标目录?您对这句话的确切含义是什么:“path/to/your/script”。
  • 非常感谢,我现在更清楚了。您能告诉我如何填写文件名,因为我无法填写具体名称吗?实际上每秒钟我都会收到像“ing_101_46763546_20160808.out”和“46763546”这样的文件是序列号。因此我无法设置永久文件名,因为它将按顺序更改。
  • 好的,然后使用*作为变量文件file="ing_101_*"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
相关资源
最近更新 更多