Crontab

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
homermg
Beiträge: 146
Registriert: 07.02.2005 20:28:03

Crontab

Beitrag von homermg » 25.07.2005 11:48:25

Hallo Leute
wollte meine SQLDB zeitgesteuret mit cron sichern.
-*/1 * * * root mysqldump -u root -ptest --opt testdb > mysqlbak.sql

das habe ich eingetragen. Habe auch den Crondiesnt gestartet aber der sichert nichts.

kann mir da jemand helfen?

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 25.07.2005 11:57:43

Fehlt evtl. ein Zeilenumbruch in der crontab-Datei? Cron führt sonst garnix aus und bringt auch keine Warnungen etc.

homermg
Beiträge: 146
Registriert: 07.02.2005 20:28:03

Beitrag von homermg » 25.07.2005 12:10:56

Hallo habe ich gemacht. Funkt aber noch immer nit. Ist den die Syntax richtig?

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 25.07.2005 12:17:51

homermg hat geschrieben:Hallo habe ich gemacht. Funkt aber noch immer nit. Ist den die Syntax richtig?
das "-" am Zeilenanfang sagt mir jetzt nix. Auch das "*/1" ist imho überflüssig. Wenn es eh jede Stunden bzw. Minute laufen soll, dann würde ein einfacher Stern auch ausreichen.

texus
Beiträge: 45
Registriert: 11.07.2005 09:14:37
Wohnort: Heide; SH

Beitrag von texus » 25.07.2005 12:23:42

Das "-" kenne ich auch nicht. Außerdem fehl da noch ein Sternchen.
Minute - Stunde - Tag - Woche - Monat = 5

Sobald das Sternchen eingefügt ist müsste es auch funktionieren.

(Bei der momentanen Einstllung sicherst du aber jede Minute !!)

MfG
texus

homermg
Beiträge: 146
Registriert: 07.02.2005 20:28:03

Beitrag von homermg » 25.07.2005 12:44:00

geht noch immer nit gibt es irgendwo eine Reportdatei?
Ich muss doch in die Datei /etc/crontab die Sachen eintragen?

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 25.07.2005 12:56:51

homermg hat geschrieben:Ich muss doch in die Datei /etc/crontab die Sachen eintragen?
Ja, oder ein Script in /etc/cron.d/ erstellen oder ne User-Crontab, die dann mit "crontab crontabdatei" eingelesen wird.
Zuletzt geändert von feltel am 25.07.2005 13:01:31, insgesamt 1-mal geändert.

texus
Beiträge: 45
Registriert: 11.07.2005 09:14:37
Wohnort: Heide; SH

Beitrag von texus » 25.07.2005 12:58:40

Das Minus ist auch weg ?

Mit crontab -e eintragen, danach den cron Dienst mit "killall -HUP cron" Neu starten.


P.S Hast du mal deine Syntax zum sichern von Hand in der Konsole eingegeben ? Funktioniert es da ?

MfG
texus

homermg
Beiträge: 146
Registriert: 07.02.2005 20:28:03

Beitrag von homermg » 25.07.2005 13:19:26

im Promt trage ich das ein und es wir ausgeführt:
pc01:~# mysqldump -u root -ptest --opt dbtest > /tmp/mysqlbak.sql

das steht in Crontab:
1 * * * * root mysqldump -u root -ptest --opt dbtest > /tmp/mysqlbak.sql
habe auch folegndes ausprobiert:
* 1 * * * root mysqldump -u root -ptest --opt dbtest > /tmp/mysqlbak.sql

texus
Beiträge: 45
Registriert: 11.07.2005 09:14:37
Wohnort: Heide; SH

Beitrag von texus » 25.07.2005 17:03:00

Wieso steht denn in der crontab dieses "root" vor dem eigentlichen Befehl ??
Wenn du das wegnimmst klappt es bestimmt.

MfG
texus

Benutzeravatar
eC
Beiträge: 354
Registriert: 24.07.2002 13:34:13
Wohnort: karlsruhe

Beitrag von eC » 25.07.2005 17:51:21

texus hat geschrieben:Wieso steht denn in der crontab dieses "root" vor dem eigentlichen Befehl ??
Soviel ich weiss, kann man so den User angeben unter dem das skript starten soll.
Ist so aber überflüssig weil es wohl eh als root laufen würde.

Du musst normalerweise in crontab Einträgen immer ganze Pfade eingeben,
da Du keinerlei Umgebung hast.

Also nicht mysqldumb sondern /usr/bin/mysqldump

gruss

eC

Zorin
Beiträge: 42
Registriert: 06.11.2004 18:08:46

Beitrag von Zorin » 25.07.2005 20:17:37

Das "root", das texus meint ist falsch. Hab das gleiche Problem auch gehabt. Einfach den user weglassen, dann klappts. z.B.

Code: Alles auswählen

* * * * * echo $(date) >> /home/user/cron-log
Gruss Zorin

PS: Hab keine Ahnung, wie man im Cron den User definiert. Ist mir auch egal. Ich leg einfach für jeden user ne crontab an. :P
Athlon 64 3200+ Winchester, A8N SLI Deluxe, 1024MB RAM, Geforce 6600GT, Debian SID pure64-gcc4.0, Kernel 2.6.13.4, KDE 3.4.2

texus
Beiträge: 45
Registriert: 11.07.2005 09:14:37
Wohnort: Heide; SH

Beitrag von texus » 26.07.2005 08:01:46

Wenn ihr als root eingeloggt seid und mit crontab -e einen Job anlegt, dann wird dieser Job mit den rechten von root ausgeführt.
Wenn ihr euch danach als normaler User einloggt und mit crontab -e einen Job anlegen wollt, werdet ihr feststellen das sie crontab leer ist. Denn für den User existiert noch kein Job.

Es wird also für jeden User eine neue Crontab angelegt. (Macht ja auch Sinn, sonst könnte ich ja als normaluser dafür sorgen das mein Job mit Root Rechten ausgeführt wird.)

Langes geschwafel kurzer Sinn: User angeben ist unnötig (und falsch), denn unter dem Fokus des Users unter dem der Cronjob angelegt wurde unter dem wird er auch ausgeführt.

MfG
texus

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 26.07.2005 08:05:16

texus hat geschrieben:Langes geschwafel kurzer Sinn: User angeben ist unnötig (und falsch), denn unter dem Fokus des Users unter dem der Cronjob angelegt wurde unter dem wird er auch ausgeführt.
Nicht unbedingt. Was wenn der User unter dessen UID der Job ausgeführt werden soll keinen Shelllogin hat. Beispiel: amavisd-Datenbank-Rebuild über /etc/cron.d/amavisd-new
Die Userangabe macht also manchmal doch Sinn und ist auch erforderlich, denn ich will keine Login-Logout-Orgie machen, wenn ich an meinem Server die Cronjobs ändern will/muss. :wink:

texus
Beiträge: 45
Registriert: 11.07.2005 09:14:37
Wohnort: Heide; SH

Beitrag von texus » 26.07.2005 08:45:35

ok ! In diesem fall hast du völlig Recht. :oops:

MfG
texus

Zorin
Beiträge: 42
Registriert: 06.11.2004 18:08:46

Beitrag von Zorin » 26.07.2005 12:15:49

feltel hat geschrieben:Die Userangabe macht also manchmal doch Sinn und ist auch erforderlich, denn ich will keine Login-Logout-Orgie machen, wenn ich an meinem Server die Cronjobs ändern will/muss. :wink:
Mmh, also der sechste Eintrag bis Ende der Zeile in der crontab ist laut manpage für das Kommando reserviert. Wie kann man da den User noch eintragen?

Gruss Zorin
Athlon 64 3200+ Winchester, A8N SLI Deluxe, 1024MB RAM, Geforce 6600GT, Debian SID pure64-gcc4.0, Kernel 2.6.13.4, KDE 3.4.2

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 26.07.2005 13:09:24

man 5 crontab hat geschrieben:The format of a cron command is very much the V7 standard, with a number of upward-compatible extensions. Each line
has five time and date fields, followed by a command, followed by a newline character ('\n'). The system crontab
(/etc/crontab) uses the same format, except that the username for the command is specified after the time and date
fields and before the command. The fields may be separated by spaces or tabs.
Die system crontab hat eine Spalte mehr ..

Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Zorin
Beiträge: 42
Registriert: 06.11.2004 18:08:46

Beitrag von Zorin » 26.07.2005 18:06:24

Ahhh, jetzt ergibt es auch einen Sinn warum ich in einem Howto die 5-spaltige und in einem anderen die 6-spaltige Version gesehen habe.
Jetzt noch rein interessehalber: Warum muss man in der /etc/crontab nicht über den Befehl "crontab -e" gehen, sondern kann direkt editieren?

Gruss Zorin
Athlon 64 3200+ Winchester, A8N SLI Deluxe, 1024MB RAM, Geforce 6600GT, Debian SID pure64-gcc4.0, Kernel 2.6.13.4, KDE 3.4.2

Benutzeravatar
eC
Beiträge: 354
Registriert: 24.07.2002 13:34:13
Wohnort: karlsruhe

Beitrag von eC » 27.07.2005 10:39:49

zorin hat geschrieben: Warum muss man in der /etc/crontab nicht über den Befehl "crontab -e" gehen, sondern kann direkt editieren?
Hi,

die Datei /etc/crontab wird vom System eh überprüft.
Crontabs von Usern müssen noch installiert werden. Dies macht
crontab -e.
Die Datei findet sich dann wieder unter
/var/spool/cron/crontabs/username
und wird vom System berücksichtigt ;)

gruss
eC

Antworten