Algunos comandos útiles para administradores | Algo de Linux

jueves, 15 de noviembre de 2007

Algunos comandos útiles para administradores

* Encontrar qué proceso está utilizando más memoria:
A veces algún proceso utiliza demasiada memoria. Podemos ver una lista de los procesos que están corriendo en nuestro sistema, ordenados por consumo de memoria de la siguiente manera:

# ps aux | sort -k 5

* Obtener una lista de archivos ordenada por tamaño:
En ocasiones, nuestros usuarios tienen agotada su quota de disco. Podemos obtener una lista de los archivos que hay en su cuenta ordenados por tamaño accediendo a su home y ejecutando el siguiente comando:

# ls -lR | sort -k 4

* Ejecutar aplicaciones desde el shell y cerrarlo:
Muchas veces cuando ejecutamos tareas o comandos desde un terminal, tardan mucho en acabar. Para no tener que estar esperando a que la tarea termine, podemos utilizar nohup a la hora de lanzar el comando y salir del shell desde el que lo iniciamos. Puede ser muy útil cuando nos conectamos a una máquina remota por ssh para ejecutar un comando o script que tarda mucho en terminar.
- Si ejecuto la tarea directamente, y cierro la conexión ssh, la tarea o comando que estaba ejecutando se finaliza.
- Pero, si ejecuto la tarea con nohup, puedo cerrar tranquilamente la conexión, que el proceso, ya terminara.

La forma de ejecutar el comando sería:

# nohup "comando" &

La tarea se ejecuta en segundo plano y no se cierra cuando cerramos el proceso padre que la lanzó.

* Planificación de tareas:
Con frecuencia, usamos cron para programar tareas, añadiendo las tareas que queremos planificar al archivo /etc/crontab. Pero, a veces, nos interesa programar una tarea para que se ejecute tan sólo una vez. En esos casos, normalmente uso batch o at.

batch nos permite retrasar la ejecución de una orden, de forma que se ejecute, no a una hora determinada, sino cuando la carga de trabajo del sistema lo permita (muy útil para el servidor).
Ejecutaremos batch desde un terminal:

# batch
El prompt cambia y nos muestra el siguiente:
at>
Bien, pues ahí podemos escribir todas las líneas de órdenes que queramos. Cuando terminemos de escribir líneas de órdenes pulsamos CTRL+D y la tarea se almacenará para ser procesada en cuanto la carga del sistema lo permita (Por supuesto, si el sistema no está muy cargado, la ejecuta directamente).

at es otro de los comandos de planificación de tareas. Nos permite programar una tarea para que se ejecute a una determinada hora, un determinado día o en una determinada fecha. Personalmente suelo usarlo cuando me queda alguna tarea por ejecutar, pero llega la hora de irme a casa y no puedo entretenerme o esperar a que llegue dicha hora. Un caso claro: Imaginad que quiero clonar un aula y he metido una tarea que clone los equipos de ese aula al encenderlos. Con at, y los scripts de encendido puedo hacer que se encienda el aula a las 15:00, cuando los alumnos se hayan marchado a casa. Así comenzarán a clonarse sin que yo tenga que estar en el insti a las 15:00. ¿Útil, verdad?

¿Cómo usarlo? Por ejemplo: at 15:00 enciende a18

* Obtener una lista de los ficheros de un usuario:
Muchas veces los usuarios exceden sus cuotas y vienen a decirnos que les da un mensaje que dice: "Su sesión ha durado menos de 10 segundos". Así que tenemos que entretenernos en buscar en su cuenta qué archivos borrarles para liberar espacio. El problema está en que, en ocasiones, tienen archivos en las carpetas de aulas u otras carpetas compartidas.

Para evitar tener que estar buscando dónde demonios tienen archivos, y como sabemos que los ficheros de los usuarios sólo pueden estar en el directorio /home, podemos hacer una búsqueda de todos los ficheros de un usuario de la siguiente manera:

# find /home -user nombredelusuario

* Sincronización de /etc/passwd y /etc/shadow
A veces creamos, borramos o modificamos usuarios de forma manual, tocando los archivos /etc/passwd y /etc/shadow, como por ejemplo, hicimos cuando clonamos los servidores. Ésto, a veces, genera problemas de sincronización entre ambos archivos.

Para comprobar si tenemos problemas en éstos archivos no tenemos más que ejecutar el comando pwck sin parámetros.

# pwck

pwck chequeará dichos archivos y nos informará si hay problemas en ellos. Por supuesto, nos dará algún warning, informándonos de que hay cuentas sin directorio home, como por ejemplo, las de sistema (que no deben tenerlo).

Una vez comprobados los problemas, ya podremos solucionarlos.

Una opción interesante de pwck, para cuando tenemos ambos archivos un poco desordenados es -s. Si ejecutamos:

# pwck -s

Nos ordenarla las entradas de ambos archivos por uid.

Otro comando muy útil cuando tenemos problemas con los archivos de usuarios es pwconv.

pwconv se ejecuta sin parámetros:

# pwconv

Cuando lo ejecutamos, comprueba si existe el fichero /etc/shadow. Si existe, lo renombra a /etc/shadow- y crea un nuevo /etc/shadow a partir del /etc/passwd. Muy útil para generar un /etc/shadow correcto cuando hemos arreglado /etc/paswd.

* Ejecución de tareas secuencialmente.
En ocasiones ponemos tareas en las aulas cuya ejecución simultánea nos causa conflictos.
Por ejemplo, cuando en un script hacemos un apt-get install "loquesea" y seguidamente un dpkg -i paquete. Aunque ejecutemos los comandos uno tras otro, si el proceso del apt-get install no ha finalizado antes de que se lance el dpkg -i, el dpkg -i no se hará.
Podemos hacer que una tarea espere a que termine la otra ejecutándolas con &&.

Ejemplo: apt-get install "loquesea" && dpkg -i paquete

De este modo, el dpkg -i paquete no se hará hasta que no haya terminado el apt-get.

No hay comentarios: