先行ジョブの実行を待つ。(解決編)
昨日の先行ジョブの実行を待つ。のコメントで setlock なるツールを教えてもらった。しかしプラットフォームに依存しない (すなわち Windows 等でも汎用的に使える) 手法が欲しかったので結局 ruby でコマンドを自作した。
class Wait end class << Wait def lock lock = true while lock if FileTest.exist?(LOCKFILE) sleep INTERVAL else lock = false end end end end if __FILE__ == $0 LOCKFILE=ARGV.shift || '.lock' interval=ARGV.shift || 1; INTERVAL=interval.to_i Wait.lock end
https://github.com/id774/scripts/blob/master/waitlock.rb
先行ジョブの実行中に C:\tmp\jobname.txt 等を作っておいて、後続のジョブでは ruby waitlock.rb C:\tmp\jobname.txt 60 とすれば 60 秒間隔で先行ジョブの終了を待つことができる。