Visualizzazione post con etichetta timeout. Mostra tutti i post
Visualizzazione post con etichetta timeout. Mostra tutti i post

martedì 29 luglio 2025

Windows: Spegnere lo Schermo tramite riga di comando

Spegnere il monitor quando non è in uso può essere utile per ridurre significativamente il consumo energetico, sia su laptop che su desktop, e si rivela particolarmente utile durante l'esecuzione di lunghe attività o script che non richiedono l'interazione visiva con lo schermo

Per visualizzare il timeout attuale dello schermo, è possibile utilizzare la GUI del Pannello di Controllo navigando nelle opzioni di risparmio energia (control.exe powercfg.cpl,,3) oppure, per un approccio più rapido e scriptabile, si può ricorrere al Prompt dei Comandi o PowerShell con il comando:
powercfg /q

Questo comando elenca dettagliatamente tutte le impostazioni del piano di alimentazione attivo. Per un'analisi più specifica del timeout del display, si possono cercare le seguenti informazioni all'interno dell'output:

Disattiva schermo dopo
FIG 1 - Disattiva schermo dopo


  GUID sottogruppo: 7516b95f-f776-4464-8c53-06167f40cc99  (Schermo)
    Alias GUID: SUB_VIDEO
    GUID impostazioni risparmio energia: 3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e  (Disattiva schermo dopo)
      Alias GUID: VIDEOIDLE
      Minima impostazione possibile: 0x00000000
      Massima impostazione possibile: 0xffffffff
      Incremento impostazioni possibile: 0x00000001
      Unità impostazioni possibili: Secondi
    Indice impostazione alimentazione CA corrente: 0x00000384
    Indice impostazione alimentazione CC corrente: 0x000000b4


Nell'esempio sopra, il valore 0x00000384 (in esadecimale) corrisponde a 900 secondi, ovvero 15 minuti, per lo spegnimento automatico del display quando il dispositivo è collegato alla corrente alternata (CA). Analogamente, 0x00000b4 rappresenta 180 secondi o 3 minuti per la modalità a batteria (CC).
Opzioni risparmio energia
FIG 2 - Opzioni risparmio energia



Configurare il Timeout di spegnimento del Display tramite riga di comando

Per modificare il tempo dopo il quale il display si spegne automaticamente all'interno del piano di alimentazione corrente, è possibile utilizzare i seguenti comandi:
  • Per la corrente alternata (AC), impostando un timeout di 5 minuti:
    powercfg -change -monitor-timeout-ac 5
  • Per la corrente continua (DC), impostando un timeout di 5 minuti:
    powercfg -change -monitor-timeout-dc 5
Questi comandi consentono una gestione granulare e scriptabile delle impostazioni di risparmio energetico del monitor.


Spegnimento immediato del Display tramite PowerShell

Per situazioni in cui è necessario spegnere il display immediatamente, Windows offre una soluzione tramite PowerShell che sfrutta le API di sistema. Questo metodo è particolarmente utile per script automatizzati o per creare scorciatoie personalizzate.

Esegui il seguente comando in un prompt dei comandi o direttamente tramite la finestra Esegui (Win+R):
cmd.exe /c powershell (Add-Type '[DllImport(\"user32.dll\")]^public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)


Questo comando richiama la funzione SendMessage dell'API user32.dll per inviare un messaggio di spegnimento al monitor.





venerdì 31 gennaio 2025

Windows: Impostare un Timeout per lo spegnimento dello schermo dal Prompt dei Comandi

Bloccare il computer quando ci si allontana dalla postazione è una delle regole fondamentali della sicurezza informatica. Proteggere i dati da accessi non autorizzati, anche per brevi periodi di assenza, è essenziale per evitare spiacevoli sorprese. 
Il PC può essere bloccato manualmente dall'utente in diversi modi ad esempio tramite la combinazione WIN+L, tramite il comando Rundll32.exe user32.dll,LockWorkStation oppure premendo CTRL+ALT+CANC e selezionando BLOCCA.  

Oltre a bloccare il computer potremmo impostare un timeout che spenga lo schermo quando non viene rilevata alcuna attività riducendo, in questo modo, il consumo energetico.

Il timeout per lo spegnimento dello schermo può essere impostato utilizzando il Prompt dei comandi attraverso i seguenti passaggi:
  1. Aprire il Prompt dei comandi come amministratore.
    - Digitare CMD nella barra di ricerca di Windows.
    - Cliccare con il tasto destro su Prompt dei comandi e selezionare l’opzione Esegui come amministratore.

  2. Eseguire il comando per impostare il timeout.
    Utilizzare il seguente comando per configurare il tempo di attesa (in secondi) prima che il monitor si spenga
    powercfg.exe /SETACVALUEINDEX SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK <tempo>
    Sostituire <tempo> con il numero di secondi desiderati. Ad esempio, per impostare un timeout di 5 minuti (300 secondi), il comando sarà
    powercfg.exe /SETACVALUEINDEX SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK 300
    VIDEOCONLOCK determina dopo quanto tempo il monitor viene spento quando il pc si trova nella schermata di blocco.
    Se si intende spegnere il monitor dopo un determinato periodo di inattività con il pc non bloccato si utilizza il comando 
    powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE <tempo>
    VIDEOIDL consente di stabilire il tempo di inattività dopo il quale il monitor si spegne quando il pc non è nella schermata di blocco.

  3. Impostare il timeout per la batteria.
    Se il PC è alimentato a batteria, vanno utilizzati i seguenti comandi al posto di quelli precedenti
    powercfg.exe /SETDCVALUEINDEX SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK <tempo>
    powercfg.exe /SETDCVALUEINDEX SCHEME_CURRENT SUB_VIDEO VIDEOIDLE <tempo>

  4. Attivare la configurazione.
    Per rendere effettive le modifiche, esegui il comando
    powercfg.exe /SETACTIVE SCHEME_CURRENT
    Questo comando assicura che le impostazioni appena definite vengano applicate correttamente.

    Blocca schermo
    FIG 1 - Blocca schermo


I timeout per lo spegnimento dello schermo possono essere configurati anche tramite GUI tuttavia il Prompt dei comandi offre un maggiore controllo e una personalizzazione più avanzata. È particolarmente utile per gli utenti esperti, gli amministratori di sistema o chiunque voglia imparare ad automatizzare alcune attività legate alla sicurezza del proprio PC.




sabato 30 luglio 2022

Linux: Comando timeout

Il comando timeout fa parte del pacchetto GNU core utilities installato in quasi tutte le distribuzioni Linux e può essere utilizzato nel caso in cui si vuole eseguire un comando che non dispone di un'opzione di timeout incorporata.
L'utility a riga di comando timeout, infatti, consente di eseguire un comando specificato e terminarlo, se è ancora in esecuzione, dopo un determinato periodo di tempo. 

Sintassi

timeout [OPZIONI] DURATA COMMANDO [ARG]…

La DURATA può essere specificata con un numero intero positivo o un numero in virgola mobile, seguito da un suffisso opzionale di unità:
s - secondi (default)
m - minuti
h - ore
d - giorni

Se non viene specificata alcuna unità, l'impostazione predefinita è secondi. Se la durata è impostata a zero, il timeout associato è disabilitato.

Utilizzo di timeout

Di seguito viene mostrato, con alcuni semplici esempi, come può essere utilizzato il comando di timeout.

timeout 5 ping 8.8.8.8
Termina il comando ping dopo 5 secondi
Linux, timeout
FIG 1 - Linux, timeout

timeout 1.2m ping 8.8.8.8
Termina il comando ping dopo 1 minuto e 20 secondi

Per eseguire un comando che richiede privilegi elevati basta anteporre sudo al comando timeout.
sudo timeout 1.2m ping 8.8.8.8

Invio di uno specifico segnale

Se non viene specificato alcun segnale, il timeout invia il segnale SIGTERM al comando gestito quando viene raggiunto il limite di tempo. È possibile specificare quale segnale inviare utilizzando l'opzione -s (--signal).
Per visualizzare l'elenco di tutti i segnali disponibili si utilizza il comando
kill -l
kill, elenco segnali disponibili
FIG 2 - kill, elenco segnali disponibili


sudo timeout 1m -s SIGKILL ping 8.8.8.8
sudo timeout 1m -s 9 ping 8.8.8.8
I comandi sopra riportati inviano il segnale SIGKILL per terminare il comando ping dopo un minuto. Il segnale può essere specificato all'interno del comando indicando il nome (SIGKILL) oppure il numero corrispondente (9).

Forzare la chiusura del processo con l'opzione -k

SIGTERM può essere catturato o ignorato da alcuni processi. In queste situazioni, il processo continuerà a funzionare dopo l'invio del segnale di terminazione.
Per assicurarsi che il comando monitorato venga terminato, va utilizzata l'opzione -k (--kill-after) seguita da un periodo di tempo. In questo modo, dopo il raggiungimento del limite di tempo indicato, il comando di timeout invia il segnale SIGKILL al programma gestito che non può essere catturato o ignorato.

Nell'esempio seguente, timeout esegue il comando ping per un minuto e, se non viene terminato, lo termina dopo dieci secondi.
sudo timeout -k 10 1m ping 8.8.8.8

Return code

Il comando timeout restituisce, come codice di ritorno, 124 quando viene raggiunto il limite di tempo, in caso contrario viene restituito il codice di ritorno del comando gestito.

Per visualizzare il return code del comando anche quando viene raggiunto il limite di tempo, si  utilizza l'opzione --preserve-status:
timeout --preserve-status 10 ping 8.8.8.8

Eseguire il comando in primo piano

Per impostazione predefinita, il timeout esegue il comando gestito in background. Per eseguire il comando in primo piano si utilizza l'opzione --foreground:
timeout --foreground 3m ./scriptfile.sh

Questa opzione è utile quando si vuole eseguire un comando interattivo che richiede l'input dell'utente.