Wie kann die Betriebszeit zum Auslösen einer Aktion genutzt werden?

Wie kann die Betriebszeit zum Auslösen einer Aktion genutzt werden?

Ich möchte Shell- oder Perl-Code schreiben, der mich nach x Tagen benachrichtigt. Grundsätzlich ist auf einem SUSE Linux-Server nach 208 Tagen ein Neustart erforderlich, sonst friert das System ein. Dies ist ein bekannter Fehler. Um dies zu vermeiden, möchte ich vor 8 Tagen eine Benachrichtigungs-E-Mail erhalten oder so etwas in der Art ... nur eine Warnung ...

Das Skript muss die aktuelle Betriebszeit prüfen und dann die verbleibenden Tage berechnen, was insgesamt 208 Tage ergibt. Ich hoffe, das ergibt Sinn.

Antwort1

Die Verfügbarkeit in Tagen können Sie ganz einfach mit awk ermitteln:

# Print days of uptime, or zero if less than 1 day.
uptime | awk '/days?/ {print $3; next}; {print 0}'

Sie können dies mit Befehlsersetzung verwenden, um basierend auf den Ergebnissen jede gewünschte Aktion auszuführen. Beispiel:

#!/bin/bash
days () { uptime | awk '/days?/ {print $3; next}; {print 0}'; }
UPTIME_THRESHOLD=200
if [ $(days) -ge $UPTIME_THRESHOLD ]; then
    : # Take some action.
fi

Natürlich liegt es an Ihnen, welche Maßnahmen Sie ergreifen. Sie können sich selbst Nachrichten senden, einen Neustart mit dembeiBefehl oder alles andere, was Sie für notwendig erachten.

Sie können dieses Skript auch als täglichen Cron-Job einrichten, sodass es die von Ihnen definierte Aktion auslöst, wenn der Betriebszeitschwellenwert überschritten wurde. Wenn Sie Root-Zugriff haben, können Sie das Skript einfach in ablegen /etc/cron.daily/oder Ihre persönliche Crontab so einrichten, dass dieses Skript einmal täglich aufgerufen wird.

Antwort2

Inspiriert von der CodeGnome-Antwort habe ich ein kleines Skript für Mac erstellt, bei dem eine Benachrichtigung angezeigt wird, nachdem der Computer um 8:30 Uhr eingeschaltet ist. Außerdem musste Cron so konfiguriert werden, dass dies jede Minute ausgeführt wird.

#!/bin/bash
timeup () { uptime | awk  '{print $3}'; }
UPTIME="8:30,"
if [ $(timeup) == $UPTIME ]; then
    osascript -e 'tell app "Finder" to display dialog "8:30 uptime! Go Home!"' &
    osascript -e 'display notification "8:30 uptime! Go Home!" with title "Go Home!!"' &
fi

verwandte Informationen