# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (test.txt installed on Fri May 16 16:05:52 2008)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
5 * * * * /home/micha/mysqlbackup.sh
Habe ich mit crontab text.txt installiert und auch mit crontab -e versucht, aber beides ohne Erfolg.
wollte mal testen ob der alle 5 min. meine mysqlbackup.sh ausführt.
Aber das ganze wird leider nicht ausgeführt.
Nach dem installierne habe ich mal /etc/init.d/cron restart gemacht.
Habe hier schon im Forum gesucht und diverses ausprobiert, aber ohne Erfolg.
Hoffe mir kann da jemand helfen, damit ich das zum laufen bekomme.
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (test.txt installed on Fri May 16 16:05:52 2008)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
5 * * * * /home/micha/mysqlbackup.sh
Habe ich mit crontab text.txt installiert und auch mit crontab -e versucht, aber beides ohne Erfolg.
wollte mal testen ob der alle 5 min. meine mysqlbackup.sh ausführt.
Wird es sicher nicht. Es wird immer um 5 nach jeder vollen Stunde ausgeführt. Die Syntax für alle 5 min wäre */5
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Zeig doch mal die Ausgabe von `ls -l /home/micha/mysqlbackup.sh` sowie den Inhalt des Skripts (am besten mit `cat -v /home/micha/mysqlbackup.sh`).
Außerdem solltest du mit MAILTO vor dem Cronjob eine E-Mail-Adresse setzen, an welche die Ausgaben des Skripts geschickt werden.
Joe User wrote:Fünfmal pro Minute? Wenn dann */12 bei der Stunden-Spalte, also zwölfmal pro Stunde ;)
In diesem Fall ist es wohl eher als alle durch 5 teilbaren Werte des ersten Felds (Minuten) zu sehen. ;)
s17:~$ cat -v /home/micha/mysqlbackup.sh
#!/bin/bash
# Shell script to backup MySql database
# To backup Nysql databases file to /backup dir and later pick up by your
# script. You can skip few databases from backup too.
# For more info please see (Installation info):
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html
# Last updated: Aug - 2005
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2004, 2005 nixCraft project
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
MyUSER="xxxx" # USERNAME
MyPASS="xxx" # PASSWORD
MyHOST="localhost" # Hostname
# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
# Backup Dest directory, change this if you have someother location
DEST="/home/micha/backup"
# Main directory where backup will be stored
MBD="$DEST"
# Get hostname
HOST="$(hostname)"
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
# DO NOT BACKUP these databases
IGGY="test"
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN micha:micha -R $DEST
$CHMOD 0755 $DEST
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$IGGY" != "" ];
then
for i in $IGGY
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$HOST.$NOW.sql.gz"
# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# and pipe it out to gz file in backup dir :)
$MYSQLDUMP --skip-lock-tables -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
fi
Wenn ich das per hand ausführe geht das ohne Probleme nur per Cron nicht.
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Anstatt den Konstrukten mit which solltest du die absoluten Pfade zu den einzelnen Programmen in das Skript schreiben. Immer im Hinterkopf behalten, dass $PATH evtl. nicht oder nicht "richtig" gesetzt ist...
Roger Wilco wrote:Anstatt den Konstrukten mit which solltest du die absoluten Pfade zu den einzelnen Programmen in das Skript schreiben. Immer im Hinterkopf behalten, dass $PATH evtl. nicht oder nicht "richtig" gesetzt ist...
Wenn ich es per Hand ausführe funzt das Prima und alles wird gesichert.
Aber selbst einfachste Scripte funzen nicht, wie z.b ne Datei downloaden.
Es geht absolut garnix.
Aber irgendwie muss es ja doch gehen, weil ja regelmäßig die logrotate ausgeführt wird vom cron.
blnsnoopy26 wrote:Wenn ich es per Hand ausführe funzt das Prima und alles wird gesichert.
Lies nochmal was ich geschrieben habe und überleg dir dann, warum es funktioniert, wenn du das Skript von Hand in einer kompletten Shell inklusive aller Umgebungsvariablen ausführst...
Du kannst auch mal einen minimalen Cronjob schreiben, um zu sehen, ob dein crond richtig arbeitet:
blnsnoopy26 wrote:Wenn ich es per Hand ausführe funzt das Prima und alles wird gesichert.
Lies nochmal was ich geschrieben habe und überleg dir dann, warum es funktioniert, wenn du das Skript von Hand in einer kompletten Shell inklusive aller Umgebungsvariablen ausführst...
Du kannst auch mal einen minimalen Cronjob schreiben, um zu sehen, ob dein crond richtig arbeitet:
* * * * * /usr/bin/touch /tmp/test
Das sollte jede Minute eine Datei /tmp/test anlegen bzw. die mtime/ctime ändern.
Geht es, wenn du es in der /etc/crontab einträgst (dann natürlich mit 1 Feld für den Benutzernamen)? Gibt es /usr/bin/touch bei dir oder liegt es vielleicht unter /bin/touch?
Roger Wilco wrote:Geht es, wenn du es in der /etc/crontab einträgst (dann natürlich mit 1 Feld für den Benutzernamen)? Gibt es /usr/bin/touch bei dir oder liegt es vielleicht unter /bin/touch?
Ja hab ja Debian Etch
Da liegt es unter /usr/bin/touch
Und wenn ich es in die /etc/crontab mit
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.