]> git.proxmox.com Git - pmg-api.git/blame - bin/pmg-daily
pmg-hourly: rotate razor log file
[pmg-api.git] / bin / pmg-daily
CommitLineData
d0d5b944
DM
1#!/usr/bin/perl -T
2
3$ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
4
5delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
6
7use strict;
8use warnings;
9use Time::Local;
10
11use PVE::SafeSyslog;
12use PVE::INotify;
13use PVE::RESTEnvironment;
14
15use PMG::Utils;
16use PMG::Config;
17use PMG::ClusterConfig;
18use PMG::DBTools;
19
20$SIG{'__WARN__'} = sub {
21 my $err = $@;
22 my $t = $_[0];
23 chomp $t;
24 print STDERR "$t\n";
25 syslog('warning', "%s", $t);
26 $@ = $err;
27};
28
29PVE::RESTEnvironment->setup_default_cli_env();
30
31initlog('pmg-daily', 'mail');
32
33my $cfg = PMG::Config->new();
34
35sub get_timespan {
36
37 my ($sec, $min, $hour, $mday, $mon, $year) =
38 localtime(time());
39
40 my $end = timelocal(0, 0, 0, $mday, $mon, $year);
41 my $start = $end - 3600*24;
42
43 return ($start, $end);
44}
45
46my $statlifetime = $cfg->get('admin', 'statlifetime');
47
48if ($statlifetime && $statlifetime > 0) {
49 my ($start, $end) = get_timespan();
50
51 $statlifetime -= 1;
52
53 my $secs = $statlifetime * 86400;
54
55 $start -= $secs;
56
57 # delete statistics older than $start
58
59 my $dbh;
60
61 my ($srows, $rrows) = (0, 0);
62
63 eval {
64 my $dbh = PMG::DBTools::open_ruledb();
65
66 $dbh->begin_work;
67
68 my $sth = $dbh->prepare("DELETE FROM CStatistic WHERE time < $start");
69 $sth->execute;
70 $srows = $sth->rows;
71 $sth->finish;
72
73 if ($srows > 0) {
74 $sth = $dbh->prepare(
75 "DELETE FROM CReceivers WHERE NOT EXISTS " .
76 "(SELECT * FROM CStatistic WHERE CID = CStatistic_CID AND RID = CStatistic_RID)");
77
78 $sth->execute;
79 $rrows = $sth->rows;
80 $sth->finish;
81 }
82
83 $dbh->commit;
84 };
85 if (my $err = $@) {
86 $dbh->rollback if $dbh;
b902c0b8 87 syslog('err', $err);
d0d5b944
DM
88 } else {
89 syslog('info', "cleanup removed $srows entries from " .
90 "statistic database ($srows, $rrows)") if $srows;
91 }
92
93 $dbh->disconnect() if $dbh;
94}
95
96
97# fixme: check for available updates
98
99# rotate razor log file
100rename('/root/.razor/razor-agent.log', '/root/.razor/razor-agent.log.0');
101
102# run bayes database maintainance
103system('sa-learn --force-expire >/dev/null 2>&1');
104
105exit (0);
106