Puedes hacer esto con un simple script bash, el comando uptime
y launchd
. Si ejecuta el comando por sí mismo, le dirá cuánto tiempo ha estado funcionando la máquina:
$ uptime
6:08 up 20 days, 21:09, 4 users, load averages: 1.09 1.29 1.36
Entonces, el número que nos interesa es el "20" que evaluaremos en relación con nuestra condición de "1 día"
#!/bin/bash
#Maximum number of days to be up
max=1
#Get the uptime days and assign it to a variable
uptime_days='uptime | cut -d " " -f 5'
if [ $uptime_days -ge $max ]
then
shutdown -h now
fi
exit 0
Asegúrese de configurar el script como ejecutable o no se ejecutará:
chmod +x shutdown24.sh
Ahora, aquí está la parte más importante. ¿Cuándo quieres evaluar esto? Técnicamente, su podría hacer que este script se ejecute cada hora (o incluso cada minuto) para evaluar si la computadora ha estado funcionando durante 24 horas.
Esto no se recomienda porque si, por alguna razón, la computadora se encendió a las 10:00 am (porque la persona llegó tarde, por ejemplo), no quiere que se apague a las 10:00 am de la mañana siguiente, cuando están en la mitad de su trabajo.
Por lo tanto, voy a suponer que desea que se ejecute a la medianoche para que no apague la máquina inadvertidamente mientras la gente está trabajando. Lo que necesita es utilizar lauchd
y crear un .plist
que defina el trabajo (similar al Programador de tareas) en Windows.
Supongamos que llamamos al script bash shutdown24.sh
, así que llamaremos a nuestro .plsit com.user.shutdown24.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.shutdown24</string>
<key>ProgramArguments</key>
<array>
<string>/Users/USERNAME/Path_to_Scripts/shutdown24.sh</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</dict>
</plist>
Copie este archivo en /Library/LaunchDaemons
y luego cárguelo en launchd
:
sudo launchctl load com.user.shutdown24.plist
El trabajo se ejecutará como root y, a las 12:00 am de la mañana, comprobará si el tiempo de actividad del sistema y se cerrará si es superior a 24 horas.