¿Cómo se puede utilizar el tiempo de actividad para desencadenar una acción?

¿Cómo se puede utilizar el tiempo de actividad para desencadenar una acción?

Quiero escribir un código Shell o Perl que me avise después de x días. Básicamente, en el servidor SUSE Linux, es necesario reiniciar después de 208 días; de lo contrario, el sistema se congelaría. Este es un error conocido. Entonces, para evitar esto, quiero que me llegue un correo de notificación antes de 8 días, algo así... solo una alerta...

El script debe verificar el tiempo de actividad actual y luego calcular los días restantes necesarios para un total de 208 días. Espero que esto tenga sentido.

Respuesta1

Puedes determinar fácilmente el tiempo de actividad en días con awk:

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

Puede usar esto con sustitución de comandos para realizar cualquier acción que desee según los resultados. Por ejemplo:

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

Obviamente, la acción que tomes depende de ti. Puede enviarse mensajes por correo, programar un reinicio con elencomando, o cualquier otra cosa que considere necesario hacer.

También es posible que desee configurar este script como un trabajo cron diario, de modo que active la acción definida cuando se exceda el umbral de tiempo de actividad. Si tiene acceso de root, simplemente puede colocar el script en /etc/cron.daily/, o puede configurar su crontab personal para llamar a este script una vez al día.

Respuesta2

Inspirándose en la respuesta de CodeGnome, hice un pequeño script para mac, donde aparece una notificación después de que la computadora está encendida a las 8:30. También tuve que configurar cron para ejecutar esto cada minuto.

#!/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

información relacionada