Come rimuovere il ritardo di 10 minuti per un arresto programmato?

0

Quando imposto un Mac come display pubblico (promemoria: si accende e si spegne automaticamente durante l'orario lavorativo) per spegnersi in un momento specifico (tramite Energy Saver), macOS eseguirà il conto alla rovescia di 60 secondi, quindi aggiungerà un conto alla rovescia aggiuntivo di 10 minuti.

Che cosa posso cambiare in macOS in modo che non ci sia alcun conto alla rovescia per un arresto programmato?

Ho trovato articoli sulla rete che dettagliano i comandi per il terminale ma non gestiscono il conto alla rovescia di 60 secondi / 10 minuti.

Qualcuno mi ha detto: "usa questo AppleScript

osascript -e 'tell application "System Events" to shut down' 

e funzionerà.

Ecco il problema. Ho incollato quella riga di codice che mi ha dato in AppleScript Editor, quindi la ho salvata come app AppleScript (facendolo in Automator e creando così un'app è la stessa). Poi vado su Calendario di Apple, creo un evento ricorrente giornaliero e associo un'azione per aprire quell'app.

Ora, ecco il trucco: Se faccio doppio clic sull'app, il Mac si spegne immediatamente. Belle. Ma non è quello di cui ho bisogno. Se l'evento viene attivato nel Calendario, ogni volta che apre l'app, indica che questa è la prima volta che viene eseguita questa app e se è OK aprirla. Nonostante io faccia clic su OPEN (o SÌ che non ricordo), questo avviso appare ogni volta che l'app viene lanciata. Sembra che il processo di spegnimento avvenga così velocemente che macOS non ha il tempo di inserirlo nel registro delle app autorizzate.

Quindi la domanda è: come lanciare quella linea di codice, senza acquistare il PowerManager da $ 50, in un momento specifico? Perché quando quella riga di codice non viene eseguita da un'app AppleScript o Automator, funziona (nessun avviso sull'app).

Grazie.

    
posta BranislavMilic 13.02.2018 - 18:44
fonte

1 risposta

3

Non hai bisogno di app a pagamento perché è molto semplice utilizzando Bash (la shell predefinita nel terminale).

Puoi arrestare il computer emettendo il comando nel Terminale

$ sudo shutdown -h now

Se lo provi, spegnerà immediatamente il tuo Mac.

Cosa fa ogni parte

  • sudo = esegui come utente root
  • shutdown = il comando per arrestare il sistema
  • -h = blocca il sistema
  • now = immediatamente

Quindi, se volessi chiudere il computer tra 5 minuti da ora, il tuo comando sarebbe:

$ sudo shutdown -h +5

Puoi persino programmarlo per un riavvio ( -r invece di -h ) in un momento particolare (11:00 pm ogni notte)

$ sudo shutdown -r -h 23:00

Mentre quel comando tutto da solo, farebbe quello che vuoi, è limitato a causa di sudo ; dovrai inserire la tua password quando è in esecuzione. Questo significa che dovrai essere on-prem a ogni macchina ogni volta che vuoi eseguire il comando (ogni giorno), quindi abbiamo bisogno di qualcosa che eseguirà il comando come root in modo che sia automatico.

Scrittura di uno script Bash

Lo script per questo è abbastanza semplice; è una singola riga che chiama il comando shutdown:

#!/bin/bash

/sbin/shutdown -h now

Chiamalo auto_shutdown.sh e salvalo in una posizione comoda. Rendilo eseguibile impartendo il comando:

$ sudo chmod +x auto_shutdown.sh

Questo imposterà il bit di esecuzione e consentirà al sistema di elaborarlo come un programma. Ora hai il tuo script, hai solo bisogno di qualcosa per eseguire quello script in un tempo predeterminato.

Uso di Launchd per pianificare il tuo lavoro

launchd è il quadro di gestione dei servizi che avvia / arresta / riavvia i processi, servizi, demoni, ecc. Per impostare un lavoro da avviare con launchd hai bisogno di due elementi:

  • tipo di lavoro da eseguire; Esegui come utente per un utente, come utente per tutti gli utenti, o come un lavoro eseguito dal sistema come root . Vogliamo l'ultimo.
  • plist (file XML) che descrive il lavoro. Gli elementi chiave su cui devi concentrarti adesso sono ProgramArguments che chiama lo script e CalendarInterval che specifica quando devono essere eseguiti i lavori. Per questo esempio, chiama il tuo plist user.com.autoShutdown.plist (nessun altro motivo per tale convenzione di denominazione oltre a quanto segue le convenzioni di Apple).

    <?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.autoShutdown</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Path_to_Script/auto_shutdown.sh</string>
        </array>
        <key>StartCalendarInterval</key>
        <array>
        <dict>
            <key>Hour</key>
            <integer>21</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    
    </dict>
    

Questo plist è impostato per eseguire lo script auto_shutdown.sh ogni giorno alle 23:30.

Poiché vogliamo eseguire questo come root, copia il plist nella directory /Library/LaunchDaemons .

$ sudo cp com.user.autoShutdown.plist /Library/LaunchDaemons

Infine, carica il lavoro in launchd :

$ sudo launchctl load com.user.autoShutdown.plist

Questo è tutto. Ogni giorno alle 11:30, il sistema si spegnerà automaticamente.

Replica su tutte le macchine

Copia lo script e plist su ogni macchina e carica il lavoro in launchd . Hai appena impostato il tempo di spegnimento per tutte le macchine e non ha richiesto utilità di terze parti ($$$).

Puoi trovare informazioni su tutti i comandi elencati qui, cercando la loro pagina man. Digita man <command> per il comando che ti interessa.

risposta data 13.02.2018 - 21:36
fonte

Leggi altre domande sui tag