ubuntuusers.de

Bash zeitgesteuert

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

anTTraXX

Anmeldungsdatum:
14. Januar 2022

Beiträge: Zähle...

Moin Ich habe das bisher nicht so finden können.

Folgendes habe ich vor, ich stehe nur komplett auf dem Schlauch wie ich das umsetzen soll.

Ich möchte via bash täglich unterschiedliche Befehle ausführen. Dabei möchte ich dem Rechner via cronjob sagen das er den bash ausführen soll.

Folgendes soll der Skript machen: Zu einer gewissen Uhrzeit einen Befehl ausführen, dieser startet einen service und beendet einen anderen service. Es handelt sich um ca 20 Befehle pro Tag, diese Befehle sind täglich anders.

Ja ich könnte es über nen cronjob machen (mache ich aktuell), das wird mir aber zu unübersichtlich. Da ich regelmäßig die Befehle anpasse wird es mittlerweile auch natürlich etwas mühselig. Außerdem finde ich es persönlich angenehmer 7 Dateien zu haben die ich separat ändern kann und mit einem Fehler nicht die gesamten cronjob zu torpedieren.

Vllt kann mir hier jemand einen Denkanstoß geben für meine Spielerei

Bearbeitet von rklm:

Distro korrigiert

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Willkommen hier im Forum!

Ich verstehe nicht so ganz, was eigentlich Dein Problem ist. Wenn Du lieber sieben Skripte hast, dann definiere doch sieben Cronjobs. Und wenn sich die Anzahl ständig ändert, dann definiere doch einfach ein Skript und einen Cronjob, der es ausführt, und rufe dann aus diesem Skript die sich ändernden anderen Jobs auf. Wenn die unabhängig sind, kannst Du sie auch parallel laufen lassen, z.B.

1
2
3
4
5
6
7
8
#!/bin/sh

job-1 &
job-2 &
job-3 &

# wait for all jobs to terminate
wait

Übrigens, heutzutage macht man das normalerweise mit Systemd-Timern. Du scheinst kein Ubuntu zu nutzen. Was ist es denn dann?

anTTraXX

(Themenstarter)

Anmeldungsdatum:
14. Januar 2022

Beiträge: 2

Sorry beim Schreiben die eigentlich Frage vergessen.

Ich wollte den Aufbau des Skript wissen.

Ich bin seit nunmehr einem Jahr Ubuntu User und ich nutze cronjob da ich diesen zu Beginn am einfachsten fand und er macht was ich will.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Ziemlich unklar, was Du willst.

anTTraXX schrieb:

Ich möchte via bash täglich unterschiedliche Befehle ausführen. Dabei möchte ich dem Rechner via cronjob sagen das er den bash ausführen soll.

Die Bash (die Bourne-Again-Shell).

Folgendes soll der Skript machen:

Ja, das Skript. Per Bash willst Du Cronjobs starten, die wiederum eine Bash starten, habe ich jetzt verstanden.

Zu einer gewissen Uhrzeit einen Befehl ausführen, dieser startet einen service und beendet einen anderen service. Es handelt sich um ca 20 Befehle pro Tag, diese Befehle sind täglich anders.

Wenn das kein regelmäßiges Muster ist, wie montags Service3 starten, dienstag und donnerstag 1 und 3, mittwochs 2 und 4 usw. oder auch anders, aber eben mit wiederkehrendem Muster, sind Cronjobs das falsche Werkzeug.

Wenn Du jeden Tag eine andere Kombination von Tageszeitungen lesen willst schließt Du auch nicht jeden Tag 4-20 Abos ab, um sie am nächsten Tag zu kündigen und 4-20 abzuschließen usw.

Ja ich könnte es über nen cronjob machen (mache ich aktuell), das wird mir aber zu unübersichtlich. Da ich regelmäßig die Befehle anpasse wird es mittlerweile auch natürlich etwas mühselig. Außerdem finde ich es persönlich angenehmer 7 Dateien zu haben die ich separat ändern kann und mit einem Fehler nicht die gesamten cronjob zu torpedieren. Vllt kann mir hier jemand einen Denkanstoß geben für meine Spielerei

Ja, at.

Mit at kannst Du einen Job zu einer Uhrzeit starten, sprich, das ist ein Scheduler für Termine, die sich nicht wiederholen.

At ist etwas ungewöhnlich, wenn auch nicht obskur. Das Kommando ruft man auf mit (Datum +) Uhrzeit, wann ein Befehl laufen soll, und den Befehl tippt man dann interaktiv in eine at-Shell ein, die man mit Ctrl-d beendet.

Bequemer ist es aber, den Befehl per Umleitung an at zu leiten:

1
echo Befehl1 | at now + 10 minutes

Der Befehl kann natürlich ein ausführbares Skript sein, das mehr als nur einen Befehl enthält.

Mit man at erfährst Du mehr zur Weise, wie Datum und/oder Uhrzeit angegeben werden können.

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1280

rklm schrieb:

Übrigens, heutzutage macht man das normalerweise mit Systemd-Timern.

Bitte jetzt keine dieser aus meiner Sicht fruchtlosen Diskussionen über "systemd.timer vs. cron" oder "systemd vs. SystemV init" lostreten.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14382

shiro schrieb:

... aus meiner Sicht fruchtlosen Diskussionen ...

Deine Sicht interessiert hier nicht. Und btw., das ist keine Diskussion, sondern ein Hinweis bzw. eine Empfehlung.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

lubux schrieb:

shiro schrieb:

... aus meiner Sicht fruchtlosen Diskussionen ...

Deine Sicht interessiert hier nicht.

Bitte einen Gang runter schalten.

Und btw., das ist keine Diskussion, sondern ein Hinweis bzw. eine Empfehlung.

Genau.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

user_unknown schrieb:

Ziemlich unklar, was Du willst.

Geht mir auch immer noch so. anTTraXX, welches Problem willst Du denn mit den zeitgesteuerten Jobs lösen?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14382

rklm schrieb:

Bitte einen Gang runter schalten.

Nein, denn das ist meine Antwort auf so einen Beitrag.

Antworten |