1.17 - Cómo cerrar un sistema

Existen siete formas de cerrar un sistema, pero en realidad a la larga sólo tiene dos opciones: puede hacerlo de la manera elegante o de la manera ruda.

¿Por qué no usar siempre el método elegante? Naturalmente uno trata de cerrar un sistema de manera elegante. Sin embargo, no todos los sistemas UNIX permiten siempre la salida limpia. En ocaciones, cuando el sistema se encuentra en medio del pricedimiento de apagado, se bloquea. Algunas circunstancias nos obligan a cerrar el sistema de la manera ruda. A continuación se ofrece una lista de las razones que pueden llevarle a cerrar el sistema en una manera poco elegante:

  • Cuando el sistema está saliendo, los procesos de la red se bloquean y los puntos de montaje NFS no se desmontan.
  • No importan cuántas veces inicie un comando (shutdown, halt, telinit, etc.) para cerrar el sistema, nada sucederá.
  • Todo acceso al sistema está bloqueado y usted no puede abrir un shell en la consola o conectarse remotamente a través de la red.
  • Un proceso fuera de control monopoliza la CPU y la carga promedio es tan alta que no es posible emitir ningún comando.
  • A veces, la tabla de procesos se llena y no es posible generar un proceso o comando para cerrar el sistema.

Hay dos cosas que siempre deben hacerse antes de iniciar cualquier comando para cerrar su sistema: verifique el nombre de host del sistma que desea cerrar, y ejecute sync en su disco.

En un ambiente UNIX en red con múltiples shells para sistemas remotos, asegúrese de estar en el sistema correcto utilizando el comando hostname. Esto sólo toma unos segundos. Si da soporte a entre 50 y 100 sistemas, es muy probable que cierre el sistema equivocado al menos una vez al año. Esto le sucederá cuando esté cansado o no esté poniendo antención.

Cuando utiliza el comando sync en sus discos, se borran todos los inodos modificados, el caché de bloque de dato y el caché de superbloque de los discos. Al ejecutar sync antes de cerrar el sistema se reduce la proporción del daño que podría ocasionarse si el sistema se bloquea o si es necesario cerrarlo por las malas.

# hostname
rocket

# sync
# sync
  • Línea 1: Verifica que cerrará el host correcto.
  • Línea 2: El primer comando sync inicia la operación de borrado de los inodos y el caché, pero podría no haber terminado antes de regresar a un indiciador de shell.
  • Línea 5: Este comando sync no se inicia sino hasta que se completa el sync anterior, lo que le garantiza que se han borrado todos los datos.

Siempre ejecute sync dos veces si realmente desea estar seguro de que se ha borrado todo. Durante el proceso de inicio, se ejecutará un demonio llamado update para ejecutar sync automanticamente cada 30 segundos. Esto no significa que no tiene que ejecutar el comando sync. No se necesita mas que un segundo para que haya inconsistencia en el sitema de archivos. el demonio update puede ser una especia de seguro. Si el sistema se bloquea, tal vez update haya tenido tiempo suficiente para ejecutar sync en los discos.

La manera de cerrar un ssitema depende del sistema en cuestión. Usted únicamente determina qué método es el mejor para su ambiente. Por lo general, las estaciones de trabajo no cuentan con aplicaciones que contengan una gran cantidad de archivos abiertos, tales como servidores de base de datos. Los servidores más grandes son susceptibles a problemas graves si ocurre un bloqueo del sistema. He aquí una lista de las maneras en que puede cerrarse un sistema, desde las mas seguras, hasta las mas elegantes o rudas.

  • shutdown - Esta es la manera mas limpia y segura de cerrar cualquier estación de trabajo o servidor si necesita detener, reinciar o cambiar el init state. Este método advierte a los usuarios que es nminente un cierre del sistema. Incluso cierra los archivos especiales y sale elegantemente de las aplicaciones. Usted puede definir estas acciones en el script de cierre rc0.
  • halt - Este comando ejecuta sync en los discos escribiendo cualquier información pendiente y deteniendo cualquier proceso no esencial. Coloca un registro de cierre en el archivo de contrabilidad y registra el cierre del sistema en el demonio de registor del sistema. No ejecuta el script de cierre rc0.
  • reboot - Al igual que el comando halt, éste ejecuta sync en los discos y detiene cualquier proceso no esencial. No obstante, reboot reinicia el kernel cargado en la memoria por el monitor PROM.
  • fasthatl y fastboot - Estos comandos son idénticos a los comandos halt y reboot. La única diferencia es que, cuando el sistema se inicia de nuesvo, no se ejecuta una verificación de los sistemas de archivos (fsck).
  • telinit - En sistemas que utilicen funciones init multinivel, puede utilizar el comando telinit para dirigir a init a un nivel de ejecución específico. Éste sigue los mismos procedimientos que shutdown; la única diferencia es que no notifica a los usuarios que el sistema va a cerrarse. Inicia el proceso de cierre.
  • Botón interruptor o llave de encendido - EL botón que se encuentra en la parte externa de algunos sistemas funciona de manera distinta dependiendo del fabricante. En algunos sistemas, funciona ccomo un simple interruptor de encendido/apagado. en otros sistemas, al presionar este botón se intenta ejecutar sync en los discos, se cierra el sistema y se inicia una secuencia halt o reboot. Incluso hay algunos sistemas en los que al presionar una vez el botón se intenta detener el sistema de manera segura, y al volver a presionarlo se corta el suministro de energía al sistema, aún cuando no se tenga la oportunidad de ejecutar sync en los discos. En la actualidad algunos fabricantes han configurado el hardware para deterctar una interrupción de encendido e intentan al menos, ejecutar sync en los discos antes de dejar al sistema sin energía.
  • Cable de corriente - Evítelo a toda costa. En ocaciones muy raras, puede ser necesario desconectar el cable de corriente. Todos los fabricantes o administradores de sistemas le recomendarán no hacerlo. No obstante, hay veces en que es inevitable y hay que hacerlos. Nunca deberá verse en esta situación con un servidor, sólo con una estación de trabajo.

Shutdown. Este comando siempre deberá usarse en cualquier servidor con múltiples usuarios y aplicaciones sensibles que deban ser cerradas de manera elegante.

Halt. Por lo general, éste comando se emplea en estaciones de trabajo individual. También se usa de manera remota a través de la red para apgar la estación de trabajo de un usuario, cuando el administrador UNIX está seguro de que el sistema se reiniciará sin ningún problema.

fasthalt y fastboot. Es conveniente utilizar estos comandos en sistemas con alto nivel de utilización, donde hay un sistema que debe reiniciarse en breve. Los candidatos para esto son cualquier sistema que proporcionen un servicio como correo, noticias, DNS o NIS. Los servidores de base de datos no son buenos candidatos para estos comandos. Este comando funciona con los servidores de archivos grandes con más de 50GB de espacio. Si el sistema de archivos está dañado y no se monta al iniciarse el servidor, siempre podrá ejecutar una verificación de sistemas de archivos en el área dañada, sin embargo el resto del sistema estará funcionando a la perfección.

telinit. Si los demas comandos fallan, el siguiente que debe probar es éste. Aunque, es muy probable que este comando no funcione, ya que su funcion es similar la de shutdown.

Botón interruptor o llave de encendido. Si no puede cerrar el sistema mediante software, no hay otro camino que presionar el botón de encendido, girar la llave o mover el interruptor de encendido.

Cable corriente. Por lo general, éste es pateado por un usuario o alguien que trabaja cerca de una estación de trabajo, quien luego llama para decir: “De repente, mi computadora se quedó sin corriente”. La mayoría de los fabricantes han disñado sus sistemas de manera que los administradores nunca tengan que lidiar con esta situación. Sin embargo, aún es posible encontrar una o odos estaciones de trabajo en las que es necesario desconectar el cable, pero nunca un sistema de nivel servidor.