Encontrei alguns comandos aqui . Experimente who -b
ou last reboot | head -1
.
who
fornece datas numéricas, enquanto last reboot
retorna nomes abreviados de dia / mês.
Eu sei que uptime
imprime o tempo que uma máquina esteve em funcionamento, mas existe uma maneira mais fácil (confiável) de obter a data da inicialização do que a contagem regressiva dessa saída?
Tentei pesquisar /proc
, mas não encontrei nada de relevante. Há também uma linha como esta no meu dmesg
: [ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
, mas eu estou querendo saber se esse método é distribuição e versão do kernel agnóstico.
Encontrei alguns comandos aqui . Experimente who -b
ou last reboot | head -1
.
who
fornece datas numéricas, enquanto last reboot
retorna nomes abreviados de dia / mês.
Isso consulta o tempo de atividade do kernel e o exibe no fuso horário local:
date -d "'cut -f1 -d. /proc/uptime' seconds ago"
Tenha cuidado com outras opções. O comando last
parará de funcionar assim que wtmp
for rotacionado. O comando who
depende da disponibilidade e integridade de utmp
. E /proc/1
pode ter a data atual em vez da data do tempo de inicialização e pode até estar indisponível em um sistema reforçado. Editar : dmesg
tem apenas um buffer de fundo de comprimento fixo, por isso é irrealizável também. Os logs do kernel podem estar em /var/log
, mas a maioria das distribuições só mantém 8 semanas deles.
Eu tropecei nessa questão enquanto procurava uma maneira de obter um tempo de inicialização consistente, em vez de tempo desde a inicialização , que muda em cada chamada.
Parece que uptime -s
fará o truque na maioria dos sistemas Linux.
Eu encontrei a linha btime
em /proc/stat
quando cutucando um pouco
cat /proc/stat | grep btime | awk '{ print $2 }'
e depois de uma pesquisa rápida, encontrei esta página: / proc / stat , que descreve o " Várias informações sobre a atividade do kernel que estão disponíveis no
/proc/stat
file. "
The "btime" line gives the time at which the system booted, in seconds since the Unix epoch.
uptime -s
, who -b
ou parsing /proc/uptime
ls -ld /proc/1
e variantes. Não use ls -ld / proc / 1 para esse propósito. Às vezes é atualizado após s2disk ou s2ram.
No meu caso, who -b
disse:
inicialização do sistema 2 de maio 09:51
Enquanto ls -ld /proc/1
:
dr-xr-xr-x 7 raiz raiz 0 3 de maio 13:09 / proc / 1
ls -ld
para /proc
ou /sys
parece persistir após a continuação, mas depende da implementação e pode mudar no futuro, portanto, não use esses métodos. E se o seu relógio do sistema estiver no horário local, não no UTC , eles têm um deslocamento negativo.
(Eu não tenho o privilégio de comentar as respostas ainda, então abri uma nova resposta. Desculpe.)
EDIT: uptime -s
foi respondido pela primeira vez nesta resposta por mikegreiling
A maneira mais simples é observar quando o / sbin / init é iniciado (esse é sempre o primeiro processo a ser iniciado após o carregamento do kernel):
# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1
Assim, posso ver que minha máquina inicializou às 6 minutos da meia-noite de 27 de março de 2011.
Se você quiser usá-lo no script, poderá usar o comando stat
:
# stat --printf='%Y' /proc/1
1301266491
O %Y
especifica o tempo desde que o diretório foi alterado pela última vez (tempo de criação do processo) em segundos desde a época (1/1/70) e é um registro de data e hora unix padrão.
No Linux,
ls -ld /proc
parece me dar o que eu preciso. O post acima é estranho. /proc/uptime
não contém um valor de data - ele teria que ser subtraído do horário atual. Talvez ele quis dizer:
date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))
Em Bash, sem pipes nem outros processos; apenas texto:
$ REPLY="$(</proc/uptime)"
$ REPLY="${REPLY%%.*}"
$ echo "$REPLY"
31207
(Apenas reutilizou a variável padrão REPLY
, mas você pode escolher o que precisar)
date -d @$(sed -n '/^btime /s///p' /proc/stat)
(ainda outra maneira de fazer isso, o que é útil em certas circunstâncias)
Comando:
(echo ' Currently:' | tr "\n" ' ' ; date +"%Y-%m-%d %k:%M:%S" ; echo ' Up Since:' | tr '\n' ' ' ; uptime -s ; echo ' Duration:' | tr '\n' ' ' ; uptime -p)
Saída:
Currently: 2016-05-09 9:06:29
Up Since: 2016-05-04 12:56:04
Duration: up 4 days, 20 hours, 10 minutes
Limpo e conciso com o comando tuptime :
# tuptime -t
No. Startup Date Uptime Shutdown Date End Downtime
1 09:43:39 AM 08/08/2017 41 days, 0 hours, 51 minutes and 2 seconds 10:34:41 AM 09/18/2017 OK 10 seconds
2 10:34:51 AM 09/18/2017 1 minute and 16 seconds 10:36:07 AM 09/18/2017 OK 1 second
3 10:36:08 AM 09/18/2017 13 minutes and 20 seconds 10:49:28 AM 09/18/2017 OK 3 seconds
4 10:49:31 AM 09/18/2017 45 days, 0 hours, 1 minute and 20 seconds 09:50:51 AM 11/02/2017 OK 4 seconds
5 09:50:55 AM 11/02/2017 27 minutes and 25 seconds 10:18:20 AM 11/02/2017 OK 4 seconds
6 10:18:24 AM 11/02/2017 9 seconds 10:18:33 AM 11/02/2017 OK 9 seconds
7 10:18:42 AM 11/02/2017 4 days, 5 hours, 41 minutes and 47 seconds 04:00:29 PM 11/06/2017 OK 44 seconds
8 04:01:13 PM 11/06/2017 15 days, 17 hours, 33 minutes and 48 seconds 09:35:01 AM 11/22/2017 BAD 10 minutes and 40 seconds
9 09:45:41 AM 11/22/2017 8 hours, 9 minutes and 20 seconds 05:55:01 PM 11/22/2017 BAD 7 minutes and 8 seconds
10 06:02:09 PM 11/22/2017 1 hour, 7 minutes and 54 seconds 07:10:03 PM 11/22/2017 BAD 11 minutes and 30 seconds
11 07:21:33 PM 11/22/2017 1 hour, 58 minutes and 32 seconds 09:20:05 PM 11/22/2017 OK 5 seconds
12 09:20:10 PM 11/22/2017 14 minutes and 52 seconds 09:35:02 PM 11/22/2017 BAD 5 minutes and 52 seconds
13 09:40:54 PM 11/22/2017 4 minutes and 6 seconds 09:45:00 PM 11/22/2017 BAD 4 minutes and 51 seconds
14 09:49:51 PM 11/22/2017 11 hours, 15 minutes and 10 seconds 09:05:01 AM 11/23/2017 BAD 7 minutes and 20 seconds
15 09:12:21 AM 11/23/2017 3 days, 2 hours, 17 minutes and 40 seconds 11:30:01 AM 11/26/2017 BAD 27 minutes and 44 seconds
16 11:57:45 AM 11/26/2017 109 days, 19 hours, 12 minutes and 37 seconds 07:10:22 AM 03/16/2018 OK 17 seconds
17 07:10:39 AM 03/16/2018 25 days, 3 hours, 55 minutes and 59 seconds 12:06:38 PM 04/10/2018 OK 3 seconds
18 12:06:41 PM 04/10/2018 8 days, 19 hours, 3 minutes and 20 seconds 07:10:01 AM 04/19/2018 BAD 3 minutes and 52 seconds
19 07:13:53 AM 04/19/2018 77 days, 9 hours, 44 minutes and 39 seconds