Curso de Linux 4/60 - Gestión de Procesos y Archivos

Esta es la cuarta entrega del curso de Linux donde cada Lunes desarrollamos un nuevo capitulo de este gran curso on line de Linux y en esta ocasión trataremos la gestión de procesos y la gestión de archivos.

Comados a utilizar en la terminal de Linux

Para poder realizar la Gestion de procesos y archivos debemos hacer uso de los siguientes comandos.

  • ps
  • ls
  • cp
  • mv
  • mkdir
  • Entre otros.

Como ya vimos el primer paso que tenemos que dar es ingresar en Linux y luego a una terminal, (consola de mando CLI o Shell) una vez dentro del terminal podrás trabajar e ingresar comandos como date qué es para ver la fecha y la hora actual.

cal qué es para ver el calendario con el día actual.

Cal Comando Linux

Y el comando uptime donde podemos ver la carga actual de sistema, cuánto lleva nuestro sistema arriba y cuántos usuarios han ingresado en el sistema.

Comando Linux uptime

De ahora en adelante y hasta que termine el curso sólo vamos a ver los parametros básicos y más frecuentes de cada uno de los comandos y servicios que veamos, porque si profundizamos en cada uno de estos no terminamos nunca.

Más bien pueden realizar sus preguntas o sugerir los temas en los cuales desean que profundicemos.

De todos modos Linux y Unix cuentan con algo que se llama man page (páginas de manual) en las cuales se profundiza más en los parámetros adicionales que tienen los comandos, éste man es muy fácil de utilizar simplemente se teclea man espacio el nombre del comando y te muestra una página del manual en la cual te explica más a fondo cuáles son los parámetros adicionales qué tiene un comando específico.

Gestión de procesos

Ahora ya necesitamos comenzar a tener control de nuestro sistema, por lo menos a nivel del usuario, lo primero que debemos aprender es que procesos están corriendo en nuestro sistema.

¿Porque?

Bueno, porque los procesos son la razón de sistema computacional, del computador u ordenador como queramos llamarlo.

El procesador de palabras es un proceso, la hoja de cálculo es un proceso, el navegador de Internet es un proceso y también cuando nosotros administramos un servidor, cualquier servicio que prestemos nosotros eso es un proceso dentro de la máquina, entonces por eso necesitamos saber y manejar qué son los procesos.

En la clase número 2 del curso estuvimos viendo qué son los procesos y como los manejan el núcleo de Linux.

Comando PS

Ahora comencemos por poner este conocimiento en práctica el primer comando con el que vamos a trabajar es ps este comando lo define la página del manual man page como una captura o snapshot del estado de los procesos en el momento en el que se ejecutó el comando, en pocas palabras nos muestran los procesos qué estaban corriendo un momento atrás.

En su forma básica ps nos muestra los procesos que estamos corriendo en el momento dado.

ps comando linux

En este caso estamos corriendo en la terminal bash y el comando ps para abrir un poco nuestros ojos pues podemos utilizar un parámetro qué es el parámetro x el parámetro x nos va a mostrar los procesos que no están corriendo en una terminal específica ósea que están corriendo en background que no están corriendo en primer plano sino que están corriendo atrás, entonces cuando ejecutamos ps con el parámetro x nos va a mostrar nuestros procesos más los procesos de la máquina que están corriendo en background .

Pero esto no es todo, si agregamos el parámetro a nos muestra los procesos de los usuarios tenemos un panorama mucho más grande de lo que corre en nuestra máquina sin embargo de qué nos sirve esto si no sabemos quién corre estos procesos bueno si le agregamos a ps xa el parámetro u nos mostrará ahora el usuario que está corriendo cada uno de los procesos.

psxau comando linux

¿Bueno y ahora qué?

Tenemos qué comprender el caudal de la información que se nos está presentando, la información que nos está presentando en once columnas son:

  1. USER qué es el usuario que está corriendo el proceso.
  2. PID que es la identificación del proceso o process id, este es el identificador único en el sistema.
  3. Porcentaje CPU qué es el porcentaje de CPU que está consumiendo el proceso es decir porcentaje del procesador que está consumiendo un proceso.
  4. Porcentaje MEM qué es el porcentaje de memoria que está consumiendo este proceso.
  5. VSZ qué significa virtual memory Site es la cantidad de memoria virtual incluyendo la paginación que un proceso está consumiendo.
  6. RSS qué significa Residence Site que es la cantidad de memoria que un proceso está consumiendo excluyendo la memoria virtual y la memoria compartida.
  7. TTY, que es la terminal en la cual está corriendo un proceso, cuando sale un interrogante es que está corriendo en background no hay una terminal que esté gobernando ese proceso.
  8. STAT qué es el estado de un proceso.
  9. START qué es la hora en la que inició el proceso.
  10. TIME qué es el tiempo de procesador que lleva consumiendo el proceso en particular.
  11. COMMAND qué es el nombre del proceso.

Bueno de estas 11 columnas, 9 son muy fáciles de entender pero hay dos que de pronto son muy ambiguos y hay que aclararlos. Estos son el tiempo de procesamiento y el estado de los procesos.

Tiempo de Procesamiento

El tiempo de proceso es el tiempo del procesador consumido por dicho proceso no se refiere al tiempo que lleva activo desde que se ejecutó sino al tiempo de procesador que ha consumido, ya que el proceso no se encuentra corriendo constantemente consumiendo el procesador sino que la mayoría del tiempo permanece en espera.

¿Porque?

En los sistemas multitarea no se ejecuta varias tareas al mismo tiempo aunque pareciera, simplemente se alternan el uso del procesador entre los procesos para dedicarle cierta cantidad de tiempo el sistema operativo tiene un planificador (eso ya lo vimos en la clase número 2 de este curso) este planificador se encarga de gestionar el tiempo de proceso.

Los estados no son más que las acciones que estos procesos llevan a cabo en su vida útil aquí tenemos una tabla que hice hace un rato, dónde están los identificadores de cada uno de esos estados.

Entonces está que:

  • D estado de dormido interrumpible normalmente son procesos que interactúan con dispositivos de entrada y salida .
  • R que es corriendo es decir, que el proceso está haciendo uso del procesador en ese momento.
  • S que esta dormido interrumpible ósea que está esperando a que un evento se complete.
  • T que es parado ya sea por una señal de parada o por seguimiento como en el caso de debug.
  • W que es paginado (no es válido del kernel 2.6 para abajo)
  • X que es muerto pero……no debería aparecer nunca en una tabla de procesos.
  • Z que difunto o zombie que es cuando un proceso ya he terminado pero no ha sido reportado al proceso padre es decir aparece en la tabla de los procesos pero el proceso ya ha terminado.
  • Ahora después del Estado del proceso vemos unos caracteres adicionales qué son: < es alta prioridad no establecida por el usuario,
  • N que es baja prioridad establecida por el usuario.
  • L mayúscula qué significa que hay páginas bloqueadas por lo general también se refiere a dispositivos de entrada y salida o tiempo real.
  • s minúscula que es líder de sesiones decir que tiene procesos hijos.
  • i que es multihilo en otras palabras que se ve como un solo proceso pero en realidad tiene múltiples hilos.
  • + que significa que es parte de un grupo de procesos.

Por último tenemos el comando ps acompañado del parámetro f.

Entonces podríamos colocar ps xauf y éste nos muestra la tabla de procesos en forma de árbol cada padre con su hijo hasta llegar hasta el proceso final, acá tenemos un ejemplo de nuestra Shell bash la cual tiene un hijo qué es el proceso ps.

Comando de la cconsola Linux ps xauf

Comando PSTREE

El comando pstree nos muestra el mismo árbol que nos muestra ps xauf pero de una manera más simple sin detalles, también podemos mostrar el PID dentro de pstree esto lo logramos con el parámetro -p, ahora con el parámetro -g podemos mostrar el grupo del usuario que corre el proceso, con entonces podemos hacer pstree -p -g.

Comando de Linux pstree

Algo muy importante de conocer el árbol de la tabla de procesos de nuestro sistema es que podemos matar  los procesos cuando sea necesario esto lo podemos hacer con el comando kill el comando.

Comando KILL

kill tiene las siguientes sintaxis:

kill espacio y el PID del proceso que queremos matar.

Entonces tenemos aquí unos ejemplos:

Hacemos ps u para ver los procesos que estamos corriendo nosotros como usuario vemos 2 procesos llamados pico estos procesos los vamos a matar de dos formas una de una forma sencilla ejecutando kill y el PID del proceso entonces nos termina el proceso.

El otro lo vamos a matar con kill -9 y el PID en este caso nos mata el proceso con la señal Kill.

Comando de Linux kill

Recuerden que la segunda clase hablamos de las señales. En el Primer caso enviamos la señal 15 lo que nos terminó el proceso, pero en algunos casos eso no es suficiente porque en el proceso se queda atascado haciendo algo y nosotros necesitamos terminar el proceso inmediatamente por eso utilizamos el parámetro -9 que envió la señal de kill y terminó el proceso inmediatamente sin esperar nada.

Comando Killall

Tenemos otro comando que se llama killall hace lo mismo kill pero no mata por medio del PID sino por medio del nombre del proceso que estamos ejecutando. Entonces tenemos otra vez nuestro ps u y los dos los vamos a matar con un solo comando killall.

Aquí podemos ver como los dos mueren al mismo tiempo con killall pico y vamos a repetir el mismo ejemplo con killall -9 pico y aquí vemos como los dos procesos muere con la señal kill.

comando linux killall

Esto de las señales lo veremos más adelante en detalle cuando estemos viendo la parte de administración de sistema como usuarios root por ahora nos vamos a enfocar sólo en las funcionalidades de usuario.

Bueno, hasta aquí dejamos el manejo de procesos por ahora y nos vamos a enfocar en el manejo de archivos.

Como ya vimos en la clase de número 2 el sistema de archivos esta organizado de forma jerárquica es decir carpetas que contienen subcarpetas en forma de árbol y éstas contiene a su vez ficheros, bueno pero.

Comando ls

Para esto nos ayudaremos del comando el comando ls.

ls comando linux

El comando ls nos muestra los archivos y los ficheros que tenemos en el punto donde estamos parados, si ejecutamos ls con el parámetro -l nos enseña la misma información pero con datos detallados primero permiso de archivos, luego la cantidad de Link duros o literales que hace referencia a nuestro archivo, el usuario propietario, el grupo propietario, el tamaño del archivo y en el caso de los directorios él toma un valor en relación al tamaño de los bloques del sistema que en este caso son 4k. La fecha y hora de la última modificación del del archivo que son las tres columnas que siguen y para finalizar el nombre del archivo.

ls -l comandos linux

Con el parámetro -a nos muestra los archivos ocultos y digo ocultos porque simplemente son precedidos por un punto qué el ls predeterminadamente no lee pero son iguales que otros archivos regulares del sistema, entonces podemos ejecutar el comando ls -a o ls -la combinando los parámetros para ver estos archivos.

ls -la comandos linux

Para aclarar cada vez que hacemos ls vamos a ver dos directorios en todas las carpetas donde estemos estos directorios son el punto (.) y el dos puntos (..) Estas carpetas directorio son simbólicos y actúan como una brújula para nosotros ubicarnos en el sistema.

El directorio (.) significado de la carpeta donde estamos actualmente es decir si nosotros hacemos pwd vemos que estamos parados en /home/fox eso es representado dentro de directorio como (.) Entonces daría lo mismo referencia (.) o referenciar /home/fox estando parados en este punto.

Lo mismo pasa con el directorio (..). El directorio(..) representa al directorio anterior al que estamos parados en este caso sería /home por ende cualquier referencia que hagamos estando parados en /home/fox .. Estaríamos hablando a /home.

El ls también nos permite hacer un barrido de las carpetas y subcarpetas de forma recursiva esto lo podemos hacer con el parámetro -R cuando queremos saber los detalles de un archivo podemos hacer ls –lR y el nombre de archivo.

También lo podemos hacer en grupo de archivos utilizando el comodín asterisco colocándolo en los archivos que preceden o anteceden determinada cadena de caracteres como por ejemplo queremos listar todos los .jpg que tenemos en nuestro directorio lo podemos hacer con * .jpg también queremos listar todos los archivos que comienzan por ala, entonces ejecutamos ls ala* y nos va a mostrar todos los archivos que comiencen por ala.

El ls soporta todos los comodines de expresión regular pero esto lo vamos a ver cuando estemos viendo Shell scrip más adelante. Esto de mirar los detalles de un archivo con solo ls - l no funciona con los directorios ¿porque por qué? cuándo ejecutamos ls – l a un directorio este nos muestra el contenido del directorio entonces para poder ver los detalles de un directorio tenemos el parámetro -d que por ejemplo ls –ld funcionaría de la misma forma que como vimos con los archivos anteriormente nos muestra los detalles.

Ahora para poder ver el tamaño de una mejor forma de una forma más entendible ls también soporta el parámetro -h qué significa formato legible al humano ejecutando ls –lh nos permite ver los tamaños de los archivos en bites, Kb, Mb, Gb y Tb,

Como mera curiosidad, una versión resumida del ls –l qué es el comando ll que es soportado por muchas versiones de UNIX.

Para terminar con el comando ls tenemos el parámetro --color este parámetro es muy útil porque nos muestra en colores los archivos y directorios teniendo como base su extensión y sus permisos, el parámetro --color en la mayoría de los distribuciones viene como un alias de la Shell bash es decir cualquier ejecución del comando ls con cualquier parámetro nos va a mostrar los archivos coloreados dependiendo de su extensión y sus permisos.

 Comando MKDIR

Bueno, lo primero es la organización y para eso es imprescindible la creacion de carpetas con el comando mkdir espacio y el nombre la carpeta, además de esto si queremos borrar carpetas que no tengan ninguna archivo o carpeta dentro lo hacemos con el comando mrdir.

¿Cómo gestionamos los archivos que contienen estas carpetas?

Bueno existen tres comandos básicos para esta misión que son:

  1. cp para copiar
  2. mv para mover
  3. rm para borrar

Los parámetros más importantes son -r que copiar recursivamente un archivo o un directorio no importando que tenga que tenga archivos directorios adentro, la -f qué fuerza la copia de una la copia de un archivo o directorio no importando que existe el destino, -p o preserva los permisos que tenía ese archivo, es decir cuando se copia, la copia resultante tiene los mismos permisos que tenía el origen y –v “verbose” que nos muestra todo lo que se copia hacia la salida estándar, -v no es muy recomendado cuando estás conectado por ssh o una sección remota y haces copia de muchos archivos ya que como tiene que mostrar a la salida estándar todo archivo que copia eso puede demorar el proceso.

El rm en su forma básica rm sólo borrar archivos que se le indiquen, no borra directorios. Para poder que borre directorios necesita el parámetros -r para que tome el borrado de forma recursiva y así pueda borrar carpeta con sus archivos y subcarpetas.

También se le puede indicar el parámetro -f para que fuerce el borrado de algunos archivos.

Como en otros comandos el rm también funciona con comodines es decir puedes borrar con rm -rf * en la carpeta donde te encuentras y borrar todo lo que hay allí para bajo de forma recursiva pero cuidado con este comando porque no vas a querer hacer rm a la raíz (rm –rf /) porque esto te va a causar un severo dolor de cabeza.

De estos 3 comandos nos queda mv.

El mv nos mueve un archivo de una ubicación del disco a otra o de una carpeta a otra. El mv tiene una peculiaridad y es que cuando se mueve el archivo de un lugar a otro dentro del mismo dispositivo de almacenamiento el no mueve físicamente la información simplemente cambia el apuntador de un lado a otro dentro del índice de archivos del sistema de archivos, pero su ubicación física no cambia.

Cuando movemos de un dispositivo de almacenamiento a otro dispositivo de almacenamiento si se comporta haciendo una copia hacia el otro disco dispositivo y borrando el origen.

Por eso es que cuando copiamos dentro de un mismo disco dispositivo almacenamiento es más lento que cuando simplemente lo movemos porque cuando movemos sólo cambia el apuntador, mientars que cuando copiamos estamos generando una duplicación de los datos qué tienen que ser escritos en otro ubicación del disco.

Comando FIND

Ahora tenemos las herramientas para gestionar nuestros archivos podemos ir más allá y podemos efectuar búsquedas en otro sistema esto lo hacemos con el comando find la sintaxis del comando find la sintaxis básica es la siguiente find ruta –name y la expresión para buscar el archivo que queremos encontrar por ejemplo find / - name uname que es un comando que ya conocemos mucho, entonces él comando nos busca en la raíz el comando uname de forma recursiva. En este caso estamos utilizando 2> /dev/null para que no nos muestre los mensajes de error ya que como estamos como un usuario y estamos buscando en todo el sistema desde la raíz entonces nos va a sacar algunos errores de permisos no queremos que salgan entonces por eso vamos a redirigir el error estándar hacia /dev/null.

find comando linux

Con find también podemos hacer búsquedas y comodines como por ejemplo * un ejemplo de puede ser find /-name libe* y esto nos va a mostrar todos los archivos que contengan al principio lib también podemos utilizar find /-name *lib y esto nos va a mostrar todos los archivos que terminen en lib para terminar en el ejemplo podemos colocar find / -name lib y nos va a mostrar todos los archivos que encuentre donde dentro de la cadena de caracteres se encuentre lib como en el caso de los comandos anteriores find también soporta expresiones regulares pero este te ma vamos a dejarlo para una clase futura en la cual solamente vamos a dedicar el comando find.

MC | midnight commander

mc midnight commander

Para finalizar tenemos aquí una herramienta muy útil para la gestión de archivos y dispositivos de almacenamiento se llama mc dice el programa MC o midnight commander, comandante de medianoche que es un clon de una utilidad para DOS que se llama Norton Commander desarrollada por el famoso hacker de DOS Peter Norton.

MC por su lado fue desarrollado por ese entonces joven mexicano Miguel de Icaza conocido contribuidor del software libre en proyectos como GNOME y MONO de quien es fundador, siendo MC su primer proyecto como contribución a GNU. Miguel de Icaza elaboró una herramienta maravillosa que aun hasta hoy ha sido portada a la mayoría de los sistemas operativos tipo Unix, de hecho también existe una versión de MC para Windows.

Bueno cuando entramos al MC podemos observar que está dividido en 5 partes diferentes un menú superior, un panel izquierdo, un panel derecho, un prompt de Shell para ejecutar comandos y un menú de teclas de función.

La barra del menú nos muestra las opciones del panel izquierdo, las opciones del panel derecho y las funciones de archivos, las utilidades y las opciones del programa cada panel independiente nos muestra 2 vistas de 2 ubicaciones diferentes del sistema también nos indica la utilización del dispositivo de almacenamiento en el que estamos parados en ese momento con su utilización y el total del dispositivo de almacenamiento, el prompt nos permite ejecutar cualquier comando de Shell, con la combinación de teclas CONTROL o desaparecemos la interface del mc lo que nos muestra la salida estándar del shell y si queremos ver otra vez la interface del MC volvemos con CONTROL o.

El menú de teclas de función es la parte más útil de este programa ya que nos permite hacer las mismas funciones con los comandos que acabamos de ver pero en un ambiente pseudografico, pseudografico porque utiliza las librerías ncurses y slang para dibujarnos en la pantalla con caracteres, una interface.

Entonces las teclas de función son

  • F1 para ayuda.
  • F2 para el menú de usuario.
  • F3 para ver.
  • F4 para editar.
  • F5 para copiar.
  • F6 para mover o renombrar.
  • F7 para crear un directorio.
  • F8 para borrado singular o también recursivo.
  • F9 para el menú de los paneles.
  • F10 para salir de la aplicación.

Bueno así llegamos al final de esta cuarta clase de nuestro curso de Linux ya vamos adentrándonos más en lo que es en nuestro sistema operativo y no olviden que lo que aprenden aquí no sólo se aplica el sistema operativo Linux si no que la mayoría también se aplica en todos los sistemas parecidos a UNIX o basados en UNIX.

Un comentario

  1. Excelente aporte!

Comentar

Su dirección de correo electrónico no será publicada.Los campos necesarios están marcados *

*

3 Compartir
Compartir3
Twittear
Compartir
+1