Puoi farlo con un semplice script bash, il comando uptime
e launchd
. Se esegui il comando da solo, ti dirà per quanto tempo la macchina è stata attiva:
$ uptime
6:08 up 20 days, 21:09, 4 users, load averages: 1.09 1.29 1.36
Quindi, il numero che ci interessa è il "20" che valuteremo in base alla nostra condizione di "1 giorno"
#!/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
Assicurati di impostare lo script come eseguibile o non verrà eseguito:
chmod +x shutdown24.sh
Ora, ecco la parte più importante. Quando vuoi valutare questo? Tecnicamente, potrebbe avere questo script eseguito ogni ora (o anche solo minuto) per valutare se il computer è rimasto attivo per 24 ore.
Questo non è raccomandato perché se per qualche motivo il computer fosse acceso alle 10:00 (perché la persona era in ritardo, per esempio) non vuoi che si spenga alle 10:00 del mattino successivo quando sono in al centro del loro lavoro.
Quindi, assumerò che tu voglia che funzioni a mezzanotte in modo da non spegnere inavvertitamente la macchina mentre le persone stanno lavorando. Quello di cui hai bisogno è utilizzare lauchd
e creare un .plist
che definisca il lavoro (simile a Task Scheduler) in Windows.
Supponiamo di aver chiamato lo script di bash shutdown24.sh
, quindi chiameremo il nostro .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>
Copia questo file in /Library/LaunchDaemons
e quindi caricalo in launchd
:
sudo launchctl load com.user.shutdown24.plist
Il lavoro verrà eseguito come root e alle 12:00 ogni mattina, controllerà se il tempo di funzionamento del sistema e si spegnerà se è superiore a 24 ore.