Shell Script - Uhrzeit if Abfrage

U

uWt-oMG-UMD-YfK

Gast
Hallo Community,

ich benötige für meinen Server einmal eine kurze Hilfestellung bei einem Shell Script. Folgender Aufbau, das Script wird alle 10 Minuten über Cron getriggered, funktioniert auch exakt so wie ich es möchte. Nur, um 4 Uhr früh läuft ein Backup und das ist gegenläufig zu dem Skript das ausgeführt wird. Jetzt würde ich gerne wissen wie ich in diesem Script eine If-Abfrage einbaue die einfach nur checked ob es 4:00 Uhr bis 4:20 ist und in diesem Zeitraum den Rest des Skriptes nicht ausführt.

Danke im Vorraus für alle Hilfestellungen :)
 
Welche Zeiit willst du? xD

1639923810946.png
 

Anhänge

  • 1639923792169.png
    1639923792169.png
    5,3 MB · Aufrufe: 172
Bash:
now=$(date '+%-H%m')
if [[ $now -ge 400 && $now -le 420 ]]
then
  exit 0
fi

es wäre aber sicherer, wenn dein backup-script z.b. unter /tmp beim starten eine datei anlegt und diese beim beenden wieder löscht und dein anderes script auf diese datei schaut. dann ist es egal, wie lange das backup-script braucht.

Bash:
if [ -f /tmp/backup_is_running ]
then
  exit 0
fi
 
  • Gefällt mir
Reaktionen: Raijin
Spricht was dagegen, eine systemd unit zu schreiben und ggf systemd timer zu nutzen?
 
  • Gefällt mir
Reaktionen: Der Lord
@0x8100
Danke, das sieht sehr nach dem aus was ich suche :) - Bezüglich der Temp Datei, also das script macht eigntlich nichts weiter als per tar ein Backup eines Ordners zu erstellen. Kann ich Tar über einen Schalter sage, lege hier eine Temp Datei an oder move ich den Tarball dann im Anschluss einfach dahin wo ich möchte?

@madmax2010
An sich nicht, nur bin ich nicht so weit vorgedrungen. Der Server ist sozusagen meine Linux Spielwiese und da kommt immer Stückchenweise was dazu.
 
Ein weit verbreiteter Ansatz für solch einen Anwendungsfall ist eine pid-Datei, die die Prozess-ID enthält. Beim Start des Skripts wird die PID in die Datei geschrieben und am Ende des Skripts wird die Datei wieder gelöscht. Sollte sich das Skript mittendrin aufhängen, kann man den Inhalt der pid-Datei lesen - das steht wirklich nur die PID drin - und kann anschließend prüfen ob es noch einen aktiven Prozess mit dieser ID gibt.

Hier wird das recht ausführlich erklärt, inkl. Code. Speziell der Part mit der Single Instance sollte passen. Im vorliegenden Fall würde die Prüfung jedoch im anderen Skript stehen. Das stündliche Skript prüft also zunächst auf die Existenz der pid-Datei und vergleicht anschließend ob es einen aktiven Prozess mit dieser PID gibt. Wenn nein, läuft das Skript, wenn doch, bricht das Skript diesen Aufruf ab.
 
  • Gefällt mir
Reaktionen: uWt-oMG-UMD-YfK
Zurück
Oben