基本的な考え方として、ビジーウェイトによる非効率性に対処するため、スクリプト実行時間(TARGET_TIME)まで、sleep するようになっています。下記は、12:00 に SnapMirror の状態を確認する場合の例になります。
#!/usr/bin/perluse Time::Local; use POSIX 'strftime'; use IO::Handle; $TARGET_TIME = "12:00"; #------------------------------if ( $#ARGV != 0) { print"usage : perl test.pl [SystemName]\n"; exit; } $sHostname = $ARGV[0]; shift( @ARGV ); while(1) { $nTime = strftime( "%Y/%m/%d %H:%M:%S" , localtime ); $nTime2 = strftime( "%H:%M:%S %Y/%m/%d" , localtime ); $nSec = strftime( "%S" , localtime ); $nTime3 = strftime( "%H:%M" , localtime ); $nDate = strftime( "%Y%m%d_%H%M%S" , localtime ); print"$nTime : target = $sHostname\n"; if ($nTime3eq$TARGET_TIME) { $str = "sshpass -p PASSWORD ssh -l root $sHostname snapmirror status > /tmp/${nDate}_$sHostname.log"; print"command : $str\n"; system( $str ); last; } $n = 60 - $nSec; sleep( $n ); } #------------------------------