多重起動禁止
# 多重起動停止 if ($$ != `/usr/bin/pgrep -fo $0`) { print STDERR "process running!\n"; exit 1; }
- node.jsからの起動だと親プロセスのシェルが引っかかるので使えない。。作る。
my ($rc, $fh_lock) = lock_process("/tmp/f"); exit 1 unless $rc; sleep 60; close $fh_lock; sub lock_process { my ($lockfile) = @_; my $rc; use Symbol; my $fh = gensym; if (open $fh, $lockfile) { my $flock_rc = flock $fh, 6; $rc = 1 if $flock_rc == 1; print STDERR "lock faild" unless $rc; } else { print STDERR "open lockfile faild $lockfile\n"; } return ($rc, $fh); }