Sé que uptimeimprime el tiempo que una máquina ha estado en funcionamiento, pero ¿hay una manera más fácil (confiable) de obtener la fecha de inicio que la cuenta atrás de esta salida?
Intenté mirar alrededor /proc, pero no encontré nada relevante. También hay una línea como esta en mi dmesg:
[ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
Pero me pregunto si este método es independiente de la distribución y la versión del kernel.

unreliable or hardacercauptime?uptimedevuelve una cadena como "hasta 13 días, 21:01", y tendrá que contarlo a partir de eso./proc/uptime.Respuestas:
Encontré algunos comandos aquí . Prueba
who -bolast reboot | head -1.whoda fechas numéricas, mientras quelast rebootdevuelve nombres abreviados de día / mes.fuente
who -b | cut -d' ' -f13fecha de devolución solamente (-f14 hora de devolución)last rebootno me dio la fecha correcta!who -bhizo.last reboottambién me dio una fecha incorrecta, wtmp parecía haber sido rotado el primer día del mesEsto consulta el tiempo de actividad del núcleo y lo muestra en la zona horaria local:
Tenga cuidado con otras opciones. El
lastcomando dejará de funcionar tan pronto comowtmpse haya girado. Elwhocomando depende de la disponibilidad e integridad deutmp. Y/proc/1podría tener la fecha actual en lugar de la fecha de inicio, e incluso podría no estar disponible en un sistema reforzado. Editar :dmesgsolo tiene un búfer de respaldo de longitud fija, por lo que también es irrealizable. Los registros del núcleo pueden estar en,/var/logpero la mayoría de las distribuciones solo conservan 8 semanas de ellos.fuente
who -buno o dos minutos en mi sistema de tiempo de actividad de 210 días. Parece quewho -binforma una marca de tiempo, mientras que este conteo se ve afectado de alguna manera por las desviaciones del reloj, incluso si estos se corrigen periódicamente por una carrerantpd.date -d "`cut -f1 -d. /proc/uptime` seconds ago" -uMe topé con esta pregunta mientras buscaba una forma de obtener un tiempo de arranque consistente y analizable , en lugar del tiempo desde el arranque que cambia en cada llamada.
Parece que
uptime -shará el truco en la mayoría de los sistemas Linux.fuente
uptime -ssalidas por ej2017-08-09 01:23:45. Esto es lo mejor, al ser más simple. Este comando está incluido en el paquete "procps".uptimeen CentOS 6 (procps version 3.2.8no parece) para apoyar esto, tristemente.uptime -sno siempre devuelve resultados constantes: superuser.com/q/1247713/71144Encontré la
btimelínea/proc/statcuando hurgaba un pocoy después de una búsqueda rápida, encontré esta página: / proc / stat explicada , que describe los "Varios datos sobre la actividad del núcleo que están disponibles en el
/proc/statarchivo".fuente
awk '/btime/{print $2}' /proc/statuptime -s,who -bo análisis/proc/uptimels -ld /proc/1y variantes.No use ls -ld / proc / 1 para este propósito. A veces se actualiza después de s2disk o s2ram.
En mi caso,
who -bdijo:arranque del sistema 2 de mayo 09:51
Mientras
ls -ld /proc/1:dr-xr-xr-x 7 root root 0 3 de mayo 13:09 / proc / 1
ls -ldpara/proco/sysparecen persistir después de la reanudación, pero es dependiente de la implementación, y puede cambiar en el futuro, así que no use estos métodos. Y si el reloj de su sistema está en hora local, no UTC , tienen un desplazamiento negativo.(Todavía no tengo el privilegio de comentar las respuestas, así que abrí una nueva respuesta. Lo siento).
EDITAR:
uptime -sfue respondido por primera vez en esta respuesta por mikegreilingfuente
La forma más simple es mirar para ver cuándo / sbin / init comenzó (ese es siempre el primer proceso que se inicia después de que se carga el núcleo):
Así que puedo ver que mi máquina se inició a las 6 minutos hasta la medianoche del 27 de marzo de 2011.
Si desea usarlo en scripts, puede usar el
statcomando en su lugar:Los
%YEspecifica el tiempo desde el directorio fue cambiado por última vez (tiempo de creación de procesos) en segundos desde la época (1/1/70) y es una marca de tiempo Unix.fuente
En Linux
Parece que me da lo que necesito. La publicación anterior es extraña.
/proc/uptimeno contiene un valor de fecha; debería sustraerse de la hora actual. Quizás quiso decir:fuente
uptime -sproporciona un valor de fechaBajo Bash, sin tuberías ni otros procesos; Solo texto:
(Solo reutiliza la
REPLYvariable predeterminada, pero puedes elegir lo que necesites)fuente
Esto parece robusto y te lo dará en formato UTC e ISO8601. (Elimine las dos últimas opciones para deshabilitar, respectivamente):
fuente
(Otra forma más de hacer esto, que es útil en ciertas circunstancias)
fuente
Mando:
Salida:
fuente
Claro y conciso con el comando tuptime :
fuente