#!/opt/csw/bin/perl use IPC::SysV qw(IPC_PRIVATE S_IRWXU IPC_CREAT); use IPC::Semaphore; use constant NFSCHECKSEMKEY => 8; #use constant FILE => '/home/system/www/home/today/index.shtml'; use constant FILE => '/etc/passwd'; $sem = new IPC::Semaphore(NFSCHECKSEMKEY , 1, S_IRWXU | IPC_CREAT) || die "Can't create semaphore! $!"; if (($pid = $sem->getval(0)) != 0) { if (kill(0, $pid)==1) { print "erp! Already checking - pid $pid\n"; exit 1; } else { print "erp! Went away - starting another\n"; $sem->setall($$); } } ## set a semaphore lock, so we don't kick off too many processes $sem->setall($$); ## stat file, make sure NFS still works. if (! (stat(FILE))[1] ) { print "Some tard's unmounted the filesystem?" } $sem->setall(0); exit 0;