PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : crond auf der Box?



CaptainDXB
07.07.2005, 08:22:12
Hallo,

ich habe gerade nach dem (auf normalem Linux) vorhandenen cron daemon gesucht - und keinen gefunden. Habe ich mich zu dumm angestellt oder gibt es den tatsächlich nicht?

Wenn nein - frage an die Runde, da ich es selber nicht kann: könnte einer so einen mal für die Box compilieren und zur Verfügung stellen?

Die Anwendungsmöglichkeiten währen vielfälig (z.B. zum Aufräumen der Logs und anderem Ballast im Dauerbetrieb, checken der Festplatte etc.)

grüße
CaptainDXB

andreas.koch
07.07.2005, 17:13:33
Die Anwendungsmöglichkeiten währen vielfälig (z.B. zum Aufräumen der Logs und anderem Ballast im Dauerbetrieb, checken der Festplatte etc.)

Für solche Aufgaben und überhaupt halte ich einen cron auf der Box für eine schlechte Lösung.
Der Speicherplatz/Ram auf der Box ist relativ begrenzt und die CPU Leistung reative gering.
Ein cron erfordert aber ziemlich viel an Verwaltungs-Daten, setzt normalerweise ein E-Mail-System voraus und wacht jede Minute einmal auf. Das alles ist vielzuviel für die Box, und macht IMO überhaupt keinen Sinn. Lemmis-Firmware kürzt Logs automatisch, checken der Festpaltte tut die Box im Fehlerfall sowieso, und könnte für andere Fälle auch via alternate-rc eingebunden werden. Außerdem läuft die Box doch nicht ständig durch, wann sollte man den die Aufgaben timen?

Grüße

Andreas

Lemmi
07.07.2005, 18:06:31
Soetwas läßt sich auch mit einfachem Script lösen.
Das Script muß von /var/etc/rc.local im Hintergrund aufgerufen werden und führt einmal täglich zu einer gegebenen Stunde die Jobs durch.

#!/bin/sh

# Vorgabe: Wann soll job starten
hour=20

let sec_per_day=24*3600
let wake=$hour*3600

echo "hour: $hour"
echo "wake: $wake"

while ( true ); do
let now=`date +'10#%H*3600+10#%M*60+10#%S'`
echo "now: $now"
let sleep=$wake-$now
echo "sleep: $sleep"
if (( $sleep <= 0 )); then let sleep=$sleep+sec_per_day; fi
echo "sleep $sleep seconds"
sleep $sleep

echo "call my jobs"
#.... my jobs

done

Die echo's müssen nach eigenem belieben auskommentiert werden.

CaptainDXB
07.07.2005, 21:40:53
Danke Lemmi,

auf die Idee war ich gar nicht gekommen - löst mein Problem perfekt :-).

viele Grüße
CaptainDXB

Lemmi
07.07.2005, 22:19:42
Danke Lemmi,

auf die Idee war ich gar nicht gekommen - löst mein Problem perfekt :-).

viele Grüße
CaptainDXB
Bitte schön!
Aber Vorsicht: ich habe es nur auf die schnelle runtergeschrieben und natürlich einmal kurz laufen lassen. Also bitte nochmal verifizieren.

markus468
01.01.2006, 17:21:11
Soetwas läßt sich auch mit einfachem Script lösen.
Das Script muß von /var/etc/rc.local im Hintergrund aufgerufen werden und führt einmal täglich zu einer gegebenen Stunde die Jobs durch.

Hallo Lemmi,
funktioniert super, ich hab nur das Problem, dass die Zeit in UTC ist wenn das script als rc.local gestartet wird.
Gibt es eine Möglichkeit da die lokale Zeit reinzukriegen oder muss ich das script bei Sommerzeitumschaltung austauschen?
Viele Grüße
Markus

MartinO
01.01.2006, 17:27:25
Gibt es eine Möglichkeit da die lokale Zeit reinzukriegen oder muss ich das script bei Sommerzeitumschaltung austauschen?


export TZ=`cat /etc/TZ_jra`

z.B. in Zeile zwei einfügen.

Gruß, Martin

markus468
01.01.2006, 18:00:42
export TZ=`cat /etc/TZ_jra`

z.B. in Zeile zwei einfügen.

Das geht ja schneller als die Polizei erlaubt.
Klappt bestens, vielen Dank.
Grüße
Markus

Lurch
02.01.2006, 17:03:47
Die Box verfügt über eine relativ alte Version von BusyBox (Version 0.43), neuere Fassungen integrieren auch einen minimalen crond (siehe BusyBox Dokumentation (http://www.busybox.net/downloads/BusyBox.html)). Ich habe testweise Version 1.01 cross übersetzt und es startet, habe aber nicht weiter probiert ob es auch wirklich funktioniert, spricht aber nichts dagegen.

Wenn Interesse besteht kann ich die Binärdatei veröffentlichen, aber so wie es aussieht ist die Sache ja bereits erledigt.

Gruß,
Lurch.

Lemmi
02.01.2006, 17:32:55
Die Box verfügt über eine relativ alte Version von BusyBox (Version 0.43),
.....
Wenn Interesse besteht kann ich die Binärdatei veröffentlichen, aber so wie es aussieht ist die Sache ja bereits erledigt.

Meine FW-Version setzt schon lange auf buysbox 1.01.
Und in meinen external-tools (http://www.m740.de/forum/showthread.php?t=1913) ist seit August 2005 eine busybox mit crond dabei.

Robert
02.01.2006, 17:36:28
Meine FW-Version setzt schon lange auf buysbox 1.01.
Und in meinen external-tools (http://www.m740.de/forum/showthread.php?t=1913) ist seit August 2005 eine busybox mit crond dabei.Ich hab die external-tools mal oben festgeklebt im LINUX Project Forum, damit solche Dinge nicht verloren gehen ;)

-- Robert

Lemmi
07.01.2006, 18:21:37
Die Box verfügt über eine relativ alte Version von BusyBox (Version 0.43), neuere Fassungen integrieren auch einen minimalen crond (siehe BusyBox Dokumentation (http://www.busybox.net/downloads/BusyBox.html)). Ich habe testweise Version 1.01 cross übersetzt und es startet, habe aber nicht weiter probiert ob es auch wirklich funktioniert, spricht aber nichts dagegen.
Habe crond in die aktuelle Beta eingebaut: http://www.m740.de/forum/showthread.php?p=39222#post39222

die amme
08.01.2006, 19:22:11
Habe crond in die aktuelle Beta eingebaut: http://www.m740.de/forum/showthread.php?p=39222#post39222

Hallo alle zusammen,

wie lässt sich denn das Verzeichnis
/var/spool/cron/crontab
noch ändern, habs mit:

crond -c /usb2/bin
und


crontab -c /usb2/bin
versucht, geht leider nicht richtig.

Oder mache ich da was anderes falsch? :rolleyes:

Mit ps -faxw sehe ich zwar


475 ? S 0:00 crond -L cronlog.txt -b -c /usb2/bin

aber sobald ich

crontab -c /usb2/bin -u root -e eingebe erhalte ich
die Meldung:

crontab: unable to create /var/spool/cron/crontab.1727

Grüße

die amme

Lemmi
08.01.2006, 20:17:09
Habe auch mal gespielt:

Einmalig ein Verzeichnis einrichten, z.B.


mkdir -p /pc2/cron/crontabs


rc.local wie folgt ergänzen: (ungetestet)


(
crondir=/pc2/cron

# warten bis cron-Verzeichnis verfügbar
while [[ ! -d $crondir ]]; do sleep 30; done

mkdir -p /var/spool
ln -s $crondir /var/spool/cron
crond
) &


cronedit wie folgt aufrufen:


VISUAL=/usr/bin/vi crontab -e

Die Umgebungsvar ist notwendig, weil der vi sonst in /bin erwartet wird.

crontab scheint aber fehlerhaft zu arbeiten, weil er immer eine Null-Datei hinterläßt. Das mögen andere herausfinden.

Lemmi
08.01.2006, 20:30:13
crontab scheint aber fehlerhaft zu arbeiten, weil er immer eine Null-Datei hinterläßt. Das mögen andere herausfinden.
oder liegt es am SMB-Share?
siehe: http://www.m740.de/forum/showthread.php?p=39451#post39451

die amme
08.01.2006, 20:42:26
Die Umgebungsvar ist notwendig, weil der vi sonst in /bin erwartet wird.

crontab scheint aber fehlerhaft zu arbeiten, weil er immer eine Null-Datei hinterläßt. Das mögen andere herausfinden.

Hallo Lemmi,

danke für die Hilfestellung.

Sobald crond läuft wird ein Kindprozess gestartet und "ps -faxw" zeigt
<defunct> an. :mad: Schade eigentlich.

Grüße und gut n8

die amme

Lemmi
08.01.2006, 20:47:43
Ich habe den Test nochmals vollständig unter /var/spool/cron ohne links durchgeführt. Funzt und frist offensichtlich auch wenig CPU-Zeit.

Das war's für heute. Muß morgen früh raus.

Lemmi
09.01.2006, 22:51:47
crond kann jetzt via Lemmi-Settings gestartet werden: 2.01.0.lemmi-02b6 (http://www.m740.de/forum/showthread.php?p=39669#post39669)

die amme
10.01.2006, 04:39:13
Danke Lemmi.

Das ist klasse. :rolleyes:

Grüße

die amme