Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

crontab @monthly - wenn Computer runtergefahren war

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
klaus-dieter
Hacker
Hacker
Beiträge: 411
Registriert: 10. Jun 2004, 04:50

crontab @monthly - wenn Computer runtergefahren war

Beitrag von klaus-dieter » 11. Jul 2015, 08:21

Hallo,

ich weiß dass "normale" cronjobs nicht nachgeholt werden wenn die Zeit in der Crontab verpasst wurde weil der Computer z.B. unten war. Ich dachte aber auf openSuse gäbe es die Erweiterung dass jobs mit @monthly dass dann einfach nachholen. Das scheint nicht zu funktionieren. Ich dachte sogar ich hätte es früher sogar mal am laufen gehabt auf einem alten Rechner. Habe ich das geträumt? Gibt es einen Trick?

Danke!

Werbung:
Benutzeravatar
panamajo
Guru
Guru
Beiträge: 2587
Registriert: 12. Feb 2005, 22:45

Re: crontab @monthly - wenn Computer runtergefahren war

Beitrag von panamajo » 11. Jul 2015, 16:32

klaus-dieter hat geschrieben:ich weiß dass "normale" cronjobs nicht nachgeholt werden wenn die Zeit in der Crontab verpasst wurde weil der Computer z.B. unten war. Ich dachte aber auf openSuse gäbe es die Erweiterung dass jobs mit @monthly dass dann einfach nachholen. Das scheint nicht zu funktionieren. Ich dachte sogar ich hätte es früher sogar mal am laufen gehabt auf einem alten Rechner. Habe ich das geträumt? Gibt es einen Trick?

Code: Alles auswählen

man 5 crontab 

Code: Alles auswählen

EXTENSIONS
       These special time specification "nicknames" which replace the 5 initial time and date fields,  and  are  pre-
       fixed with the '@' character, are supported:

       @reboot    :    Run once after reboot.
       @yearly    :    Run once a year, ie.  "0 0 1 1 *".
       @annually  :    Run once a year, ie.  "0 0 1 1 *".
       @monthly   :    Run once a month, ie. "0 0 1 * *".
       @weekly    :    Run once a week, ie.  "0 0 * * 0".
       @daily     :    Run once a day, ie.   "0 0 * * *".
       @hourly    :    Run once an hour, ie. "0 * * * *".
Sollte also gehen...

klaus-dieter
Hacker
Hacker
Beiträge: 411
Registriert: 10. Jun 2004, 04:50

Re: crontab @monthly - wenn Computer runtergefahren war

Beitrag von klaus-dieter » 12. Jul 2015, 20:09

"Sollte" das bestätigt dann ja schon mal dass ich nicht so falsch liege :-)

Aber was kann es sein wenn es nicht geht?

Code: Alles auswählen

server:~ # crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.57L5vo installed on Sat Jul 11 08:08:16 2015)
# (Cronie version 4.2)
@reboot /usr/local/bin/mirror.sh
@monthly /usr/local/bin/mirrorroll.sh
@reboot /usr/local/bin/convert.sh
server:~ # 

Benutzeravatar
revealed
Guru
Guru
Beiträge: 3016
Registriert: 15. Sep 2006, 12:50

Re: crontab @monthly - wenn Computer runtergefahren war

Beitrag von revealed » 9. Aug 2015, 22:11

Ich glaube die Befehle @monthly usw sind cron der benutzer.
Und die anderen also die in /etc/crond.dxyz sind system cronjobs.

Und ich bin mir über die Richtigkeit nicht ganz sicher bei der Aussage aber ich meine gelesen zu haben, dass der systemcron jetzt irgendwie mit systemd arbeitet. Das heisst dann denke ich dass diese system jobs jetzt mit systemctl ansteuerbar sind.

Prüfe doch mal: /var/spool/cron/lastrun auf die 0 Byte Datei den Merker "cron.monthly".
Und falls dort schon ein Flag ein file mit "monthly" abgelegt ist. Ist der letzte Vorgang "monthly" schon ausgeführt worden und wird deshalb nicht getriggert.

Wenn dort kein File liegt, steht dessen Ausführung noch im raum. Du siehst hier wann das sein wird:

Code: Alles auswählen

cat /etc/crontab
Also zu dieser zeit wird geprüft ob noch cronjobs ausstehen. Es werden genannte obrige flags geprüft. Das sind eben jene "system" crons aus /etc/cron.daily usw....

Falls du dich im Fehlerfall befinden solltest kannst ihn dann manuell triggern mit:

Code: Alles auswählen

cd /usr/lib/cron/
./run-crons <- das absetzen des Befehls musst eventuell so anpassen dass du den computer verlassen kannst ohne warten zu müssen, bis alle jobs erledigt sind. Bei der genauen Syntax für diesen Befehl bin ich mir nicht sicher deswegen hier kein code tag von mir und eine Warnung.

Du möchtest diese Datei eventuell auch kurz mit less oder so öffnen und die ersten paar Kommentare lesen. Dort steht das drin.

Code: Alles auswählen

less /usr/lib/cron/run-crons
Und das hier sollte "active (running)" in der Ausgabe beinhalten:

Code: Alles auswählen

systemctl status cron.service
Hoffe das hilft.

Gruß,

R

PS.: Ich kenne mich wie gesagt nicht all zu genau aus, aber ich meine etwas gelesen zu haben dass die crons der Benutzer irgendwie via anachron erledigt werden können nach einem ähnlichen Prinzip. Wie genau das stattfindet und ob dazu konfiguration notwendig ist, und wie und überhaupt weiss ich nicht.

Aber wenn deine Scripte die du als @daily @monthly usw in der root crontab angelegt hast auch als "system" benutzer ausführbar sind. D.h. keine besondere root oder adminberechtigung benötigen, wäre es besser du kopierst die entsprechenden scripte in die dafür vorgesehen struktur.
- /etc/cron.daily
- /etc/cron.monthly
- usw.

Das schreibe ich dir aus dem Grund, weil ich beispielsweise selbst einen solchigen script im Einsatz habe dessen ausführung nur als root möglich ist.

Diesen starte ich aber in einem solchen fall unter Aufsicht als Verwalter dieses Systemes händisch selbst. Aber man kann sich überlegen wie man soetwas dennoch automatisieren kann in dem falle. Und zwar indem man seinen script verträglich macht. Oder den anderen weg halt geht und sich mit anachron oder dgl. auseinandersetzt.
|Nb: T60 2008 43G @oS Leap 42.1 | Pc: @oS TW Core i5 4670k; 8 GB RAM; MSI Z87 G43 Gaming | MSI TF 770 GTX | 840 EVO; SX900 |The reason computer chips are so small is computers don't eat much. | systemd | Mini Tuning guide für openSUSE 13.2 |

Antworten