2010-07-24 20:12:11 +0000 2010-07-24 20:12:11 +0000
40
40

C'è un registro che registra gli spegnimenti in Linux?

Mi stavo chiedendo se c'è un file di log in Linux che registra ogni volta che il computer viene spento?

La ragione per cui lo chiedo è che sto facendo alcuni test su quanto dura la batteria del mio portatile in certe condizioni. Il mio portatile è configurato per spegnersi automaticamente quando rimangono circa 10 minuti di batteria, quindi se c'è un file di log da qualche parte che registra quando il computer viene spento, questo renderà i miei test molto più facili.

Sto usando Ubuntu 10.04. Grazie!

Risposte (8)

29
29
29
2010-07-29 09:30:27 +0000

Che ne dite del comando last -x shutdown?

16
16
16
2010-07-24 21:43:43 +0000

Il file /var/log/messages dovrebbe davvero avere qualcosa relativo agli spegnimenti in esso, per esempio il mio (CentOS 5) ha linee come questa:

Jul 18 23:00:13 nero shutdown[2649]: shutting down for system halt
...
Jul 18 23:00:27 nero kernel: Kernel logging (proc) stopped.
Jul 18 23:00:27 nero kernel: Kernel log daemon terminating.

Controlla il tuo /etc/syslog.conf o /etc/rsyslog.conf o equivalente per assicurarti che i log vadano lì. Probabilmente avrete bisogno dei privilegi di root per leggere i file di log.

Inoltre, mentre non si tratta di spegnimenti di per sé, il comando “last” dovrebbe segnalare i riavvii.

Non c'è proprio nulla nei log intorno al momento dell'ultimo spegnimento?

Per il tuo test, tieni a mente che il tuo computer sa solo che gli restano 10 minuti a causa delle informazioni che la batteria sta riportando, che possono essere accurate o meno. Piuttosto che aspettare gli spegnimenti potresti guardare direttamente le informazioni ACPI. Sul mio portatile è qui:

/proc/acpi/battery/BAT0/

Lì dentro, i file “state” e “info” sembrano interessanti. Potresti guardare la capacità rimanente nel file di stato mentre fai girare il tuo portatile in varie condizioni per vedere quanto velocemente scende.

5
5
5
2015-03-26 14:50:50 +0000

Prima di tutto, lasciatemi iniziare dicendo che so che questo è un vecchio thread. Commento solo in modo che altri che trovano questo mentre frugano nella rete (come ho fatto io oggi) avranno una risposta chiara.

Secondo, notate che il seguente comando è una cattiva pratica e rientra nella categoria “usi inutili di cat” (cercatelo su Google)…

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Quella linea dovrebbe essere cambiata in:

grep "`LC_ALL=en_en.utf8 date +"%b %e"`" /var/log/messages

grep, e la maggior parte dei comandi unix/linux (sed, awk, ecc…) non richiedono cat per leggere il contenuto di un file. È sufficiente mettere il percorso e il nome del file dopo il comando per passarlo come argomento. Aggiungere una pipe e un altro comando esterno (cat) è solo tempo e risorse sprecate.

Infine, per quanto riguarda dove trovare una registrazione degli arresti e/o dei riavvii del sistema, usate l'ultimo comando perché è esattamente quello per cui è pensato. Legge il file di log /var/log/wtmp per tutte le voci di login/logout. Poiché gli spegnimenti e i riavvii sono in realtà un evento di login/logout a livello di sistema, vengono registrati qui. Lo stesso vale per lo spegnimento della console di root, è un evento di logout.

Esempio:

last -5 reboot shutdown root

Questo ti darà le ultime 5 voci di riavvio, spegnimento, e root (spegnimento della console incluso) nel log wtmp.

Risultato:

reboot ~ Mon Mar 23 14:51
shutdown ~ Mon Mar 23 14:49
root console Mon Mar 23 14:49 - shutdown (00:00)
reboot ~ Mon Mar 16 09:54
shutdown ~ Thu Mar 12 17:41

Spero che questo aiuti chiunque si imbatta in questo thread :-)

4
4
4
2010-07-24 20:16:46 +0000

Il file /var/log/messages dovrebbe contenere queste informazioni

2
2
2
2010-07-25 01:22:07 +0000

se vuoi tenere traccia di quanto tempo il tuo computer è stato acceso in passato puoi usare qualcosa come uptimed.

viene fornito con un programma chiamato uprecords che ti mostra per quanto tempo il tuo computer è stato acceso.

1
1
1
2017-01-19 18:02:30 +0000

last reboot ha funzionato per me su CentOS 6.7.

Per mostrare l'anno nell'output, in modo che abbia effettivamente senso se hai più di un anno di record, fai

last -F reboot

Anche se ho capito che lo switch -F non funziona su alcuni sistemi, come Solaris. Apparentemente è parte dell'ultimo di GNU, però.

Grazie a https://unix.stackexchange.com/a/97597/174520

1
1
1
2014-05-07 13:52:00 +0000

Ecco un one-liner per elencare tutti i messaggi del giorno corrente:

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

Questo è stato testato su CentOS quindi YMMV.

E naturalmente c'è last reboot e last shutdown (come detto), ma questo è troppo semplice per le mie esigenze (fornisce solo le date).

0
0
0
2010-07-24 21:15:36 +0000

se non è presente alcun log, si può provare ad aggiungere qualche ‘data >>mylog’ allo script di spegnimento (in alcuni dist, si chiama rc.shutdown)

oppure, c'è anche un modo senza bisogno di previlage. eseguire:

while [1];do sleep 5;date>mylog;sync;done

e seguire il mylog nella prossima sessione.