Ubuntu - Crontab

Das Forum fĂĽr den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!
Forumsregeln
Das Forum fĂĽr den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!

Ubuntu - Crontab

Beitragvon beneheld » Do 16 Feb, 2012 14:47

Hallo liebe Leser

habe heute mal ein etwas anderes Problem...habe zwei Scripte, die einwandfrei laufen:

/bin/ftp_eib.sh
mysql --user=root --password= eib < /bin/mysql.sql

wenn ich die so eintippsle in der Shell gehts super. Wenn ich die aber so ins die Crontab eintrage, gehts nicht.

10 * * * * /bin/ftp_eib.sh
20 * * * * mysql --user=root --password= eib < /bin/mysql.sql

das hat sicher was mit der Berechtigung zu tun - aber was muss ich ändern?

Vielen Dank im Voraus, lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Do 16 Feb, 2012 18:00

>das hat sicher was mit der Berechtigung zu tun - aber was muss ich ändern?
meist hilfts einfach mal die logfiles oder die status mails vom cronjob zu lesen

du hast 2 cronjobs funktionieren beide ned?

btw. wär es sinnvoll absolute pfade in cronjobs anzugeben, also bsp.
20 * * * * `which mysql` --user=root --password= eib < /bin/mysql.sql
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Mo 20 Feb, 2012 09:41

hi Lordpeng,

danke für die Antwort und sorry für die Verspätung - ja leider gehen beide Crons nicht.

habe jetzt im Log diesen Eintrag bei beiden crons gefunden:
Feb 20 08:20:01 tomahawk CRON[12651]: (CRON) error (grandchild #12665 failed with exit status 1)

Was heisst das?

Vielen Dank, lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Mo 20 Feb, 2012 12:18

>Feb 20 08:20:01 tomahawk CRON[12651]: (CRON) error (grandchild #12665 failed with exit status 1)
>Was heisst das?
schwer zu sagen, exit code 1 kann praktisch alles sein ...
ich wĂĽrd mal sicher stellen, dass die pfade zu den programmen und daten wirklich korrekt sind und dass der benutzer, welcher den cronjob ausfĂĽhrt auch ausreichend rechte hat, wenn sich's nicht um einen root-cronjob handeln sollte

liegt der einzuspielende sql dump 'mysql.sql' wirklich in /bin/ ?
wie schaut das script /bin/ftp_eib.sh aus? werden da absolute pfade angegeben?

du musst davon ausgehen, dass sich ein cronjob nicht exakt gleich wie eine shell verhält, z.b. können keine oder andere pfade gesetzt sein, desweiteren kanns sein, dass file-globbing ned geht - d.h. scripts immer so bauen, dass du nicht in solche fallen laufen kannst ...
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Mi 22 Feb, 2012 10:30

hi lordpeng,

so, habe jetzt einige Sachen versucht - es ist ganz einfach - der Cron geht schon, nur muss ich mit meinem Adminuser angemeldet sein ĂĽber ssh, ansonsten macht er das nicht.

die Frage die sich mir jetzt stellt, wie kann ich das ändern? ich bin schon admin User...

Kannst du mir da vielleicht helfen? Übrigens auch danke für deinen Post in der PHP Sektion bzgl. ODBC - läuft mittlerweile auch!

Merci beaucoup, lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Mi 22 Feb, 2012 19:26

>der Cron geht schon, nur muss ich mit meinem Adminuser angemeldet sein ĂĽber ssh, ansonsten macht er das nicht.
kann ich nicht nachvollziehen, wĂĽrd entweder auf einen fehler im child-prozess (dem script) tippen oder einem bug bei der ubuntu verison (was ich eher bezweifle)

>die Frage die sich mir jetzt stellt, wie kann ich das ändern? ich bin schon admin User...
admin oder root? ist nicht das selbe ...
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Do 23 Feb, 2012 08:40

hi lordpeng,

nein, also am Script liegts sicher nicht - denn wie gesagt, alles läuft super durch wenn ich mit meinem User angemeldet bin (hab mich jetzt mal 24h angemeldet lassen und alles läuft super). Bei Ubuntu gibts ja keinen root User oder? ich bin also immer mit dem User angemeldet, den ich am Anfang angelegt habe - folglich müsste das ja der admin User sein?

was mich wundert ist das - wenn ich crontab -e mache:

30 5 * * * /usr/bin/wget -q -O /dev/null http://localhost/anwesenheitstafel/geburtstagsmail.php
30 9 * * 1-4 /usr/bin/wget -q -O /dev/null http://localhost/mittagessen/email.php
30 7 * * 1-4 /usr/bin/wget -q -O /dev/null http://localhost/mittagessen/daily.php
* * * * * /usr/bin/wget -q -O /dev/null http://localhost/dbimport.php

5 * * * * /bin/ftp_eib.sh
6 * * * * /usr/bin/mysql --user=root --password=xxx eib < /bin/mysql.sql

die ersten vier Jobs gehen ohne Anmeldung auf der Shell, die letzte zwei nur mit Anmeldung auf der Shell.

Was könnte man da noch machen?
Danke, lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Do 23 Feb, 2012 08:46

>die ersten vier Jobs gehen ohne Anmeldung auf der Shell, die letzte zwei nur mit Anmeldung auf der Shell.
und genau das kann ich nicht nachvollziehen - cronjobs werden als dienst ausgeführt - grundsätzlich muss da kein benutzer angemeldet sein, d.h. irgendwas läuft da mehr als unrund

was genau macht die '/bin/ftp_eib.sh'? die lädt nicht zufällig die mysql.sql von irgendwo nach /bin/ herunter?
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Do 23 Feb, 2012 09:17

hi,

also schau hier ist das ftp_eib.sh:

#/bin/bash
cd /home/bheld/eib/
rm daten.csv
/usr/bin/ncftpget -u xxx -p xxx-DD 192.168.97.97 /home/bheld/eib /Homeserver/_monitoring/*.csv -DD
chmod 755 *.csv
mv *.csv daten.csv

und die mysql.sql:

LOAD DATA LOCAL INFILE '/home/bheld/eib/daten.csv' INTO TABLE daten FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

lg
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Do 23 Feb, 2012 10:22

wenn man das ganze mal logisch durchdenkt, könnte man zum schluss kommen, dass die datei csv datei nicht herunter geladen werden kann (warum auch immer) weshalb dann auch das nachfolgende sql script fehl schlägt, was einen zur annahme bringen könnte, dass die cronjobs ned durchlaufen ...

werfen wir mal einen blick auf dein script ...
#/bin/bash
cd /home/bheld/eib/
rm daten.csv
/usr/bin/ncftpget -u xxx -p xxx-DD 192.168.97.97 /home/bheld/eib /Homeserver/_monitoring/*.csv -DD
chmod 755 *.csv
mv *.csv daten.csv


erste zeile mĂĽsste auf jedenfall so lauten:
#!/bin/bash


chmod 755 *.csv

wozu soll das gut sein? wenn du die berechtigungen änderst, dann sollte 644 (RW-R-R) genügen, du willst die csv datei ja ned ausführen, d.h. kein RWX-RX-RX für files die keine scripts oder binärdateien sind und direkt ausgeführt werden sollen ... wird jetzt aber nicht die ursache deines problems sein ...

LOAD DATA LOCAL INFILE '/home/bheld/eib/daten.csv' INTO TABLE daten FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

wenn meine bescheidenen sql-kenntnisse mich nicht täuschen, schaut das nicht so falsch aus ...

dennoch ich würde das temporäre file nicht im home verzeichnis eines users ablegen sondern unter /tmp/ damit umschiffst viele berechtigungsprobleme und das temporäre file is dort wo es hin gehört ...

anstelle ncftp wĂĽrde ich wget nehmen, ist aber vermutlich eher geschmackssache ...

mein download-script wĂĽrde so aussehen:
#!/bin/bash
/usr/bin/wget ftp://xxx.nnn.ddd.fff/pfad/zur/datei/*.csv --ftp-user=BENUTZER --ftp-password=PASSWORT --ignore-case -O /tmp/.csvimport/daten.csv

könnte man aber so auch direkt in die crontab eintragen ...

hth
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Do 23 Feb, 2012 11:22

hi lordpeng,

hmmm ok - da hast du Recht den Schreibfehler hab ich gar nicht bemerkt. Ich habe jetzt mal dein STMT genommen - das funktioniert wunderbar - auch deine anderen Hinweise habe ich beachtet.

Wie bekomme ich aber wget dazu, das File auf dem Server nach dem Download zu löschen? mit --delete-after=on löscht er zwar das File, aber lokal? Gibts dafür auch noch einen Parameter? Leider habe ich nämlich nichts dazu gefunden! :-(

Danke nochmal fĂĽr die Hilfe!
lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Do 23 Feb, 2012 11:57

hmm, obs eine funktion zum löschen von files auf einem ftp server bei wget gibt wüsst ich jetzt nicht, auf die schnelle hab ich in der man page nix gefunden, zur not muss man's via ftp script lösen, ist dann zwar nicht so elegant, weils kein einzeiler mehr ist, aber dennoch weniger fehleranfällig als dein ursprünglliches script, weils NUR 2 befehle sind die ausgeführt werden, nämlich ftp und mv ... alles andere sind nur FTP kommandos ...


ein beispielscript mit ftp wĂĽrde so ausschauen

#!/bin/bash
/usr/bin/ftp -v -n xxx.nnn.fff.ddd << EOF
#### FTP SITZUNG STARTET AB HIER ####
user BENUTZER KENNWORT
bin
prompt
cd /pfad/zur/datei/
lcd /tmp/
mget *.csv
mdel *.csv
bye
EOF
#### FTP SITZUNG IST ABGESCHLOSSEN ####

mv -f /tmp/*.csv /tmp/daten.csv
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Re: Ubuntu - Crontab

Beitragvon beneheld » Do 23 Feb, 2012 12:38

hi lordpeng

SUPER vielen vielen Dank - alles läuft hervorragend!

lg beneheld
beneheld
Board-Mitglied
Board-Mitglied
 
Beiträge: 183
Registriert: So 11 Jul, 2004 10:47

Re: Ubuntu - Crontab

Beitragvon lordpeng » Do 23 Feb, 2012 12:44

wo darf ich die rechnung hinschicken? :-)
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45


ZurĂĽck zu LINUX & UNIX-DERIVATE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 24 Gäste