ฉันจะตั้งตัวจับเวลานับถอยหลังเป็น perl สำหรับการทำฟังก์ชั่นซ้ำ ๆ ได้อย่างไร?


-1

ฉันกำลังคัดลอกไฟล์จากไฟล์หนึ่งไปยังอีก ฉันต้องการตรวจสอบว่าไฟล์ต้นฉบับนั้นมีอยู่หรือไม่ซ้ำทุก ๆ 10 วินาที ฉันจะตรวจสอบในระหว่างการคัดลอกได้อย่างไร

คำตอบ:


1

บางทีฉันอาจไม่เข้าใจคำถามทั้งหมด ทำงานต่อไปนี้หรือไม่

use File::Copy;

sleep 10 until -e $source;
copy($source, $target);

ฉันมีไฟล์ขนาดใหญ่หนึ่งไฟล์ในเซิร์ฟเวอร์ของฉันฉันต้องการคัดลอกไปยังเครื่องคอมพิวเตอร์ หากเครือข่ายถูกตัดการเชื่อมต่อการคัดลอกล้มเหลว ดังนั้นฉันจึงติดตั้งโค้ดเพื่อหลีกเลี่ยงปัญหานั้นและรอ 1 มินต์สำหรับเครือข่าย แต่ไม่ได้ทำการเช็คอินระหว่างการคัดลอก กำลังตรวจสอบเพียงครั้งเดียว ดังนั้นหากฉันมีตัวจับเวลานับถอยหลังฉันสามารถตรวจสอบแหล่งที่มาซ้ำแล้วซ้ำอีก
Sabarish

0

คุณสามารถใช้ -e ทดสอบไฟล์และ sleep:

perl -e'$s = "/source/path"; sleep 10 until -e $s; `rsync $s /destination/path`'

หากคุณอยู่ในสคริปต์ Perl:

#!/usr/bin/env perl
use warnings;
use strict;

# be careful if your paths contain spaces
my ($source, $dest) = qw(path/to/source path/to/dest);

sleep 10 until(-e $s);
system('rsync', $source, $dest);

ฉันมีไฟล์ขนาดใหญ่หนึ่งไฟล์ในเซิร์ฟเวอร์ของฉันฉันต้องการคัดลอกไปยังเครื่องคอมพิวเตอร์ หากเครือข่ายถูกตัดการเชื่อมต่อการคัดลอกล้มเหลว ดังนั้นฉันจึงติดตั้งโค้ดเพื่อหลีกเลี่ยงปัญหานั้นและรอ 1 มินต์สำหรับเครือข่าย แต่ไม่ได้ทำการเช็คอินระหว่างการคัดลอก กำลังตรวจสอบเพียงครั้งเดียว ดังนั้นหากฉันมีตัวจับเวลานับถอยหลังฉันสามารถตรวจสอบแหล่งที่มาซ้ำแล้วซ้ำอีก
Sabarish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.