viernes, 3 de abril de 2015

¿Cómo puedo saber en qué ocasiones inició el sistema?


Un hombre ha de conocer todas las técnicas físicas para lograr su cometido. Desde mis tiempos de cadete, decidí acercarme al crecimiento físico a través de la gimnasia, aquella que purifica el cuerpo y prepara la mente.


Todo ello requiere una cuidadosa disciplina que no hace sino bien al hombre, pues atresa al músculo de la Costumbre. Todos los métodos de control que podamos afianzar son siempre buenos cuando uno educa al cuerpo.

Normalmente, el día del cadete comienza a diana, y se extiende durante las horas de ejercicio, gabinete, marcha y formación, así como las diferentes pruebas físicas.

Sin embargo, un sistema informático puede tener un inicio a cualquier hora en la cual el usuario lo necesite, o puede estar programado para iniciarse de forma automática. Un sistema de escritorio, por ejemplo, suele encenderse o apagarse a lo largo del día siguiendo las pautas de trabajo de su usuario. GNU con Linux es capaz de instalarse en servidores u otros dispositivos embebidos, y en ocaciones estos dispositivos suelen estar encendidos durante mucho más tiempo, sin apagarese.


En ocasiones, querremos saber hace cuanto tiempo tenemos encendido un sistema determinado, por ejemplo nuestro sistema de escritorio o un aparato que use Linux (como un router).

Para ello, el comando uptime de Linux nostal infomación. Por ejemplo, al ingresar en mi router, que corre OpenWRT, al ingresar uptime en su terminal, devuelve algo como:

16:54:41 up 34d 6h 55 min,  3 users,  load average: 0.02, 0.04, 0.06

Lo que nos indica la hora actual de sistema, y nos provee el tiempo total que el sistema lleva encendido (en el ejemplo, treinta y cuatro dias, 6 horas y 55 minutos sin apagarse). También nos indica la cantidad de usuarios, y el porcentaje de carga de la CPU actual, y el promedio de hace 5 y de hace 15 minutos.

Si bien nos indica indirectamente, no sabemos exactamente cuándo se encendió o apagó el sistema.

Ello podremos averiguarlo en nuestro equipo mediante el comando:

last reboot

Con esto nos devolverá un listado de las instancias en las cuales se enciende nuestro servidor GNU con Linux.

Por ejemplo:

(...)
reboot   system boot  2.6.35-32-generi Thu Mar  5 16:55 - 17:38  (00:42)   
reboot   system boot  2.6.35-32-generi Thu Mar  5 08:41 - 13:47  (05:06)   
reboot   system boot  2.6.35-32-generi Wed Mar  4 16:51 - 20:38  (03:47)   
reboot   system boot  2.6.35-32-generi Wed Mar  4 15:22 - 15:53  (00:31)   
reboot   system boot  2.6.35-32-generi Tue Mar  3 18:57 - 23:17  (04:19)   
reboot   system boot  2.6.35-32-generi Tue Mar  3 16:31 - 17:27  (00:55)   
reboot   system boot  2.6.35-32-generi Tue Mar  3 13:27 - 14:06  (00:39)   
reboot   system boot  2.6.35-32-generi Tue Mar  3 13:05 - 14:06  (01:01)   
reboot   system boot  2.6.35-32-generi Tue Mar  3 07:41 - 07:55  (00:13)   

wtmp begins Mon Mar  2 19:46:48 2015


Esto nos permitirá dilucidar y analizar cuándo se encendió el equipo, y durante cuanto tiempo permaneció activo.

En tanto, podremos ver la fecha y hora de la última instancia de inicio del sistema actual con:

who -b

Sistema de arranque 2015-03-29 15:59

También podríamos hacer el cálculo de cuándo se encendió el sistema, haciendo un diferencial entre la fecha actual, y el resultado del comando uptime. Sería simple haciendo uso de un miniprograma escrito en lenguaje Perl a dicho efecto.

Para ello abrimos el editor con:

sudo nano /usr/local/sbin/dsdcuandoupt

Se abrirá el editor peronista Nano con dicho programa,  y le pegamos el siguiente código y guardamos:

# Desde Cuando Uptime, programa para saber cuando se inició por
# última vez el sistema. 
uptime | \
perl -ne '/.*up +(?:(\d+) days?,? +)?(\d+):(\d+),.*/; $total=((($1*24+$2)*60+$3)*60);
$now=time(); $now-=$total; $now=localtime($now); print $now,"\n";'

Luego le damos permisos de ejecución con:

sudo chmod +x /usr/local/sbin/dsdcuandoupt


...y ahora podremos ejecutar el programita en nuestro sistema con el comando:

dsdcuandoupt

Y nos devolverá la fecha desde el último inicio. Por ejemplo:

Dom Mar 29 16:00:25 2015

Si en cambio, necesitamos un detalle de los inicios de sesión en el sistema (incluyendo terminales), podremos hacerlo mediante el comando:

w

No hay comentarios:

Publicar un comentario en la entrada