spezieller cronjob

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Don83
Beiträge: 57
Registriert: 03.05.2009 18:02:27

spezieller cronjob

Beitrag von Don83 » 16.10.2009 17:50:09

Hallo community,

ich bin was Linuxprogrammierung angeht leider nicht sehr bewandert.
Grundsätzlich möchte ich einen cronjob schreiben, der alle paar Minuten ein script ausführt.
Wäre klasse wenn jemand gute Tutorials oder docus kennt.

bis denn,
Don

jeff84
Beiträge: 324
Registriert: 15.07.2009 13:32:36

Re: spezieller cronjob

Beitrag von jeff84 » 16.10.2009 17:59:38

einfach mal nach crontab googeln. Sollte alles erklären...

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: spezieller cronjob

Beitrag von rendegast » 16.10.2009 18:08:32

Code: Alles auswählen

man 5 crontab
und die Beispiele in /etc/cron*/


Später, mit mehr Erfahrung, falls cron durch fcron ersetzt würde:

Code: Alles auswählen

man 5 fcrontab
Some Examples of Lines Based on Elapsed System Up Time

# Get our mails every 30 minutes
@ 30 getmails -all
# make some security tests every 48 hours of system up time,
# force a mail to be sent to root even if there is no output
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Don83
Beiträge: 57
Registriert: 03.05.2009 18:02:27

Re: spezieller cronjob

Beitrag von Don83 » 16.10.2009 18:35:11

Hallo,
also ich habe mal in die file /etc/crontab folgende Zeile eingefügt:
*/1 * * * * root perl /home/daniel/Desktop/test.pl

Code: Alles auswählen

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
*/1 * * * * root perl /home/daniel/Desktop/test.pl
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Wollte jetzt damit testweise jede Minute das script test.pl ausführen - das script ist ein ganz einfaches testscript.

Code: Alles auswählen

#!/usr/bin/perl

use strict;

print "Halli Hallo!\n";
Der cronjob funktioniert aber noch nicht wirklich, bekomme keine prints auf der Konsole.
Muss ich den cronjob jetzt noch irgendwie aktivieren?

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: spezieller cronjob

Beitrag von GoKi » 16.10.2009 18:42:15

Don83 hat geschrieben:Der cronjob funktioniert aber noch nicht wirklich, bekomme keine prints auf der Konsole.
Auf welcher Console sollte der Output denn erscheinen. Ausgaben von cron jobs werden dem jeweiligen Nutzer als mail zugstellt.
Zu cron gibt es bei UbuntuUsers eine recht nette Seite
http://wiki.ubuntuusers.de/Cron
MfG GoKi
:wq

jeff84
Beiträge: 324
Registriert: 15.07.2009 13:32:36

Re: spezieller cronjob

Beitrag von jeff84 » 16.10.2009 18:43:32

Und wie soll der dir auf irgendner Konsole was ausgeben? Der weiß doch nicht welche... Es sollte eigentlich an root ne Mail mit der ausgabe geschickt werden. In /var/log/messages sollte sich was dazu finden, obs geklappt hat...

Don83
Beiträge: 57
Registriert: 03.05.2009 18:02:27

Re: spezieller cronjob

Beitrag von Don83 » 16.10.2009 18:47:46

In var messages gabs keine Meldung - aber ok, klar verstehe das ganze jetzt schon. Also danke euch allen für die Hilfe, ist gar nicht mal so kompliziert wie ich befürchtet hatte.

Benutzeravatar
format_c
Beiträge: 188
Registriert: 23.01.2008 14:24:17
Kontaktdaten:

Re: spezieller cronjob

Beitrag von format_c » 17.10.2009 13:01:26

Wenn das Skript in einem Benutzerverzeichnis liegt, sollte es auch als der User ausgefuehrt werden.
Man sollte nur privilegiert Skripte ausfuehren wenn es nicht anders geht.
Darueber hinaus sollte man nicht direkt die /etc/crontab dazu benutzen.
Normalerweise kann jeder Benutzer inklusive root eine eigene Crontab haben.
Dazu fuehrt man einfach des Befehl crontab mit passenden Schaltern aus.

Code: Alles auswählen

crontab -l # zeigt die Crontab des aktuellen Benutzer an
crontab -e # Editiert die Crontab des aktuellen Benutzers mit dem in der Variable $EDITOR definierten Editor
In der benutzereigenen Crontab ist dann auch die Angabe des auszufuhrenden Benutzers wegzulassen.
*/1 ist gleichbedeutend mit "jede Minute" was * gleichkommt. Also wuerde deine Zeile in deiner eigenen Crontab so aussehen:

Code: Alles auswählen

* * * * * perl /home/daniel/Desktop/test.pl
Die Stufennotation in der Crontab macht nur Sinn wenn man regelmaeßige aber lange Zeitdefinitionen kurz notieren mochte.
For example, ``0-23/2'' can be used in the hours field to specify
command execution every other hour (the alternative in the V7 standard is
``0,2,4,6,8,10,12,14,16,18,20,22''). Steps are also permitted after an
asterisk, so if you want to say ``every two hours'', just use ``*/2''.
Gruß Alex

Antworten