Re: Mail z crona neodchází

Petr Vileta petr na practisoft.cz
Neděle Červen 15 17:06:52 CEST 2003


>      na SuSE Linuxu 8.0 spouštím z crona shell skript, který vypne mysql
> (/etc/init.d/mysql stop), zazálohuje databáze a mysql opět spustí
> (/etc/init.d/mysql start). Skript je napsán tak, že vypisuje (echo)
hlášení
> o prováděných činnostech a jejich výsledku.
Ja mam RH 7.3, ale "/etc/init.d/mysql stop" je nejake divne, ne? Ja pouzivam
"/etc/init.d/mysqld stop". Podle me je
mysql pouze klient, kdezto mysqld je demon.

>      Cron má nastavenu e-mailovou adresu, kam odeslat výstup skriptu.
> Problém je v tom, že žádný e-mail nedojde. Provede-li se (třeba ručně)
> restart mysql, dotyčný e-mail okamžitě dojde tj. někde to visí.
No ja pouzivam na zalohovani databazi tenhle svuj vytvor, a nemusim ani
stopnout demona a zalohuje to uplne fsechno:
---CUT---
#!/usr/bin/perl

use CGI qw(:standard);
use DBI;
$pathcfg = "/var/backup/";
$pathbkp = "/var/backup/MySQL/";
open STDERR,">&STDOUT";
print "---------Backup databazi---------\n";
$host= "localhost";
$myddb="";
$opt_user="root";
$opt_password="root_passwd";
$dbh = DBI->connect("DBI:mysql:$mydb:$host",$opt_user,$opt_password) or die
"Can't connect anything: $DBI::errstr\n";
$sth=$dbh->prepare("show databases");
$sth->execute() or print "No show databases\n";
$dbfs=$sth->fetchall_arrayref([0]);
$sth->finish;
for $d (0 .. $#{$dbfs})
    {
    $dbf=$dbfs->[$d][0];
    next if($dbf eq 'mysql');
    $dir=$pathbkp . $dbf;
    if(stat($dir)*1==0)
        {
        mkdir $dir;
        chown((getpwnam('mysql'))[2,3],$dir);
        }
    $sth=$dbh->do("use $dbf");
    $sth=$dbh->prepare("show tables");
    $sth->execute() or print "No show tables from database $dbf\n";
    $tables=$sth->fetchall_arrayref([0]);
    $sth->finish;
    for $t (0 .. $#{$tables})
        {
        $tbl=$tables->[$t][0];
        $sth=$dbh->prepare("backup table $tbl to \'$dir\'");
        $sth->execute() or print "No backup table $t to $dir\n";
        $row=$sth->fetchrow_arrayref;
        print "$row->[0] $row->[2] $row->[3]\n";
        $sth->finish;
        }
   }
$rc=$dbh->disconnect;
print "---------Backup databazi konec---------\n";
---CUT---

--

Petr Vileta
http://www.zivnosti.cz
http://www.practisoft.cz




Další informace o konferenci Linux