13 |
# 2000-03-01 DbP poravljen ignore_dirs grep bug |
# 2000-03-01 DbP poravljen ignore_dirs grep bug |
14 |
# |
# |
15 |
# 2000-03-31 Hana sada ignorira sve sto ^eng$, ^eng_ , ^adresar$ u imenu direktorija |
# 2000-03-31 Hana sada ignorira sve sto ^eng$, ^eng_ , ^adresar$ u imenu direktorija |
16 |
|
# 2000-05-03 DbP lock support |
17 |
|
|
18 |
$mod_time = 10*60; # 10 minuta |
$mod_time = 10*60; # 10 minuta |
19 |
#$mod_time = 24*60*60; # 1 day |
#$mod_time = 24*60*60; # 1 day |
20 |
|
|
21 |
$verbose = 0; |
$verbose = 0; |
22 |
|
|
23 |
|
use Fcntl ':flock'; # import LOCK_* |
24 |
|
$lock="/tmp/kvake.lock"; |
25 |
|
|
26 |
#@ignore_dirs=( "/data/web/public/adresar/", "/data/web/public/eng" ); |
#@ignore_dirs=( "/data/web/public/adresar/", "/data/web/public/eng" ); |
27 |
|
|
28 |
while (defined($ARGV[0]) && $ARGV[0] eq "-v") { |
while (defined($ARGV[0]) && $ARGV[0] eq "-v") { |
40 |
|
|
41 |
print STDERR "Scanning dirs: @dirs\n" if ($verbose); |
print STDERR "Scanning dirs: @dirs\n" if ($verbose); |
42 |
|
|
43 |
|
print STDERR "locking\n" if ($verbose); |
44 |
|
while (-e "$lock") { |
45 |
|
sub read_lock_pid { |
46 |
|
my $pid; |
47 |
|
open(LOCK,"$lock") || die "can't open lock $lock: $!"; |
48 |
|
$pid=<LOCK>; |
49 |
|
close(LOCK); |
50 |
|
return $pid; |
51 |
|
} |
52 |
|
$run_pid=read_lock_pid; |
53 |
|
print STDERR "lock on pid $run_pid found\n"; |
54 |
|
# if not over in 15 min. kill (next re-run will do actual work) |
55 |
|
sleep 15*60; |
56 |
|
$new_pid=read_lock_pid; |
57 |
|
if ($run_pid == $new_pid) { |
58 |
|
print STDERR "killing process $run_pid and clearing lock\n"; |
59 |
|
kill 9,$run_pid; |
60 |
|
unlink $lock; |
61 |
|
die; |
62 |
|
} |
63 |
|
} |
64 |
|
|
65 |
|
open(LOCK,">$lock") || die "can't open lock $lock: $!"; |
66 |
|
print LOCK "$$"; |
67 |
|
flock(LOCK,LOCK_EX); |
68 |
|
|
69 |
foreach $dir (@dirs) { |
foreach $dir (@dirs) { |
70 |
opendir(DIR,"$dir") || warn "can't open $dir: $!"; |
opendir(DIR,"$dir") || warn "can't open $dir: $!"; |
71 |
foreach $f (grep { !/^\./ } readdir(DIR)) { |
foreach $f (grep { !/^\./ } readdir(DIR)) { |
116 |
chown $stat[4],$stat[5],"$file"; |
chown $stat[4],$stat[5],"$file"; |
117 |
} |
} |
118 |
|
|
119 |
|
print STDERR "unlocking\n" if ($verbose); |
120 |
|
flock(LOCK,LOCK_UN); |
121 |
|
close(LOCK); |
122 |
|
unlink $lock; |
123 |
|
|
124 |
1; |
1; |
125 |
|
|
126 |
sub replace { |
sub replace { |