Diferencia entre revisiones de «Administración de software»
Sin resumen de edición |
Sin resumen de edición |
||
Línea 170: | Línea 170: | ||
<code>dpkg</code> instalará todos los paquetes que terminen en <code>.deb</code>, es decir los paquetes que descargamos. Una vez instalados, el programa que queríamos utilizar ya puede usarse. | <code>dpkg</code> instalará todos los paquetes que terminen en <code>.deb</code>, es decir los paquetes que descargamos. Una vez instalados, el programa que queríamos utilizar ya puede usarse. | ||
</div> | </div> | ||
== Agregando software desde fuentes externas<br/> == | == Agregando software desde fuentes externas<br/> == | ||
<div class="level2"> | <div class="level2"> | ||
Línea 225: | Línea 224: | ||
*<div class="li">Podemos añadir direcciones de una <span style="font-family:courier new,courier,monospace">LAN </span>(Red de área local)<br/></div> | *<div class="li">Podemos añadir direcciones de una <span style="font-family:courier new,courier,monospace">LAN </span>(Red de área local)<br/></div> | ||
Hay otras posbilidades, sin embargo es recomendable '''''śolo añadir direcciones confiables''''' como medida de seguridad, ya que al añadir sitio estamos diciendolé al sistema que confie plenamente en el contenido que este sitio alberga.<br/></div> | Hay otras posbilidades, sin embargo es recomendable '''''śolo añadir direcciones confiables''''' como medida de seguridad, ya que al añadir sitio estamos diciendolé al sistema que confie plenamente en el contenido que este sitio alberga.<br/></div> | ||
== Compartición de bibliotecas<br/> == | == Compartición de bibliotecas<br/> == | ||
<div class="level2"> | <div class="level2"> | ||
Línea 343: | Línea 341: | ||
#<div class="li">Una vez terminado el proceso comprobamos que la PC vuleve a funcionar correctamente volviendo a la interfaz gráfica con (ctrl+alt+F7)<br/></div> | #<div class="li">Una vez terminado el proceso comprobamos que la PC vuleve a funcionar correctamente volviendo a la interfaz gráfica con (ctrl+alt+F7)<br/></div> | ||
Esto nos puede ayudar pero '''matar''' un proceso problemático no siempre es la mejor opción, se puede detener el proceso o asignarle otra prioridad, pero estos temás no se abordarán en este curso, vea los sitios de ayuda para más información.<br/></div> | Esto nos puede ayudar pero '''matar''' un proceso problemático no siempre es la mejor opción, se puede detener el proceso o asignarle otra prioridad, pero estos temás no se abordarán en este curso, vea los sitios de ayuda para más información.<br/></div> | ||
=== Monitor de sistema<br/> === | === Monitor de sistema<br/> === | ||
</div> | </div> | ||
Línea 362: | Línea 359: | ||
---- | ---- | ||
Revisión del 15:44 20 ene 2014
En este apartado se mostrarán los principios escenciales para manejar el software de la computadora en un sistema GNU/Linux derivado de Debian.
El software de la computadora se maneja en lo que se llaman paquetes que contienen losbinarios del programa, es decir el código máquina que le dice a la computadora qué hacer para que el programa funcione. Los programas generalmente se "empaquetan" para hacer más fácil su distribución.
Existen también paquetes de software que contiene el código fuente del programa, que contiene las instrucciones en lenguajes de programación desde las cuales se construyen los binarios del programa para que este pueda ejecutarse.
En este artículo veremos los paquetes de software que contienen los binarios para ejecutar el programa.
Paquetes de Software
Un paquete de software es un programa que ha sido construido desde su código fuente y ha sido empaquetado de acuerdo a un sistema manejador de paquetes. En GNU/Linux existen dos sistemas manejadores de paquetes principales:
- Paquetes RPM de Red Hat package manager (.rpm es la extensión de archivos empaquetados) de la distribución Red Hat y derivados.
- Paquetes Debian (.deb es la extensión de archivos empaquetados) de la distribucón Debian y derivados.
Un paquete de software contiene uno o varios programas precompilados, además un paquete contiene información adicional (meta-data) del paquete. Esta informacion adicional incluye descripción y versión del paquete y dependencias, que ayudan al sistema manejador de paquetes a organizar todos paquetes de la computadora de forma que sea posible Instalar, Actualizar y Desinstalar programas sin que hayan problemas de dependencias entre paquetes, permitiendo así la reutilización de programas.
Dependencias entre paquetes
La idea es simple, un programa puede necesitar que otros programas y bibliotecas estén instalados para poder funcionar.
Por ejemplo si hay un programa llamado ”Calculadora” que funciona vía línea de comandos y alguién hace un programa con interfaz gráfica de usuario GUI de ”Calculadora” para facilitar su manejo y lo llama ”CalculadoraGUI”, es claro que el programa ”CalculadoraGUI” necesita o depende del programa ”Calculadora” para funcionar por que ”CalculadoraGUI” sólo es una adaptación de ”Calculadora”.
En un SO Windows la típica forma en que un programa se distribuye es que este programa incluye a todos los demás programas de los que depende y se instala con estos, pero esto provoca consecuencias.
- Si un programa se instala sin comprobar que los programas de los que depende ya estén instalados, entonces al instalarlo se instalarán también esos programas, y si estos ya están instalados causará que se utilice más memoria del disco duro y más memoria RAM para ejecutar ese programa, esto último en el caso de las bibliotecas.
Los paquetes .rpm y .deb usados en distribuciones de GNU/Linux incluyen no sólo el programa en sí sino una lista de otros programas de los que depende, gracias a esto los sistemas manejadores de paquetes RPM y Debian pueden fácilmente consultar a su base de datos si esas dependencias están o no instaladas en el sistema. Una vez hecha esta búsqueda el manejador de paquetes sólo instalará las dependencias no satisfechas, es decir, los programas y bibliotecas que faltan. Con esto último se aprovecha cada espacio de memoria en el disco duro y se optimiza el consumo de memoria RAM resultando en un sistema más rápido y con más espacio de almacenamiento.
Paquetes Debian
Se usan en las distribuciones basadas en Debian como Ubuntu, Mint, ver más y al igual que los rpm son paquetes de software.
Los paquetes Debian contienen dos archivos comprimidos .tar
y un archivo con información de control. Los paquetes .deb
son paquetes binarios es decir, contienen el código máquina del programa resultado de la previa construcción de este, por eso son archivos de instalación.
Generalmente un paquete de software Debian lleva el nombre de la siguiente forma:
- Nombre del paquete '→como por ejemplo
emacs23
del editor emacs. - Versión →un número que generalmente lleva puntos aunque no necesariamente, por ejemplo
23_23.
asignada por el autor del programa. - Número de construcción →que viene después de la versión y es colocado por el mantenedor del paquete por ejemplo
3+1-1ubuntu9.
- Arquitectura →Que viene justo antes del
.deb
que indica para que arquitectura de computador fue construido el paquete, por ejemplo para un PC con CPU x86 el código de esta arquitectura esi386
. - extensión →que es .deb
Por ejemplo para el editor Emacs el paquete emacs23_23.3+1-1ubuntu9.2_i386.deb
contiene los binarios del programa Emacs en su versión 23 construido para ubuntu 9.2 y funciona en una aruitectura i386
que significa que es para PCs x86. Pero esta estructura de nombre es una convención para repositorios, y no es obligatoria, si una persona hace un paquete .deb puede nombrarla como le plazca solo con la extensión .deb
al final.
Los dos archivos comprimidos que contiene el paquete son:
control.tar.gz
: que contiene toda la meta-data como la versión del paquete, nombre, dependencias, tamaño que tendrá una vez instalado, etc. Esta información permite al manejador de paquetes Debian (ver más adelante) qué porgramas buscar antes de la instalación y que configurar durante la instalación del programa.data.tar.gz
,data.tar.bz2
,data.tar.lzma
odata.tar.xz
: que contienen los archivos que serán instalados.debian-binary
: la versión de formato deb que actualmente es 2.0.
Los paquetes .deb
son manejados por herramientas de gestión de paquetes que son conjuntamente con una base de datos son el sistema manejador de paquetes de Debian.
Los paquetes .deb
son imcompatibles con los .rpm
pero existen herramientas para convertir entre estos dos sistemas.
Herramientas para gestión de paquetes
dpkg
dpkg
es el programa base del sistema manejador de paquetes Debian, con dpkg
se realiza la instalación, desinstalación, actualización, etc de los paquetes de software .deb
. Se maneja vía línea de comandos por lo que se considera una herramienta de bajo nivel.
dpkg puede abrirse desde una terminal siguiendo la siguiente sintaxis:
dpkg [opciones] [acción] ["nombre del paquete" ó "nombre de los archivos .deb"]
dpkg
tiene muchas opciones que no describiremos aquí, pero para verlas basta con escribir en una terminal:
dpkg --help
ó
man dpkg
dpkg –help
mostrará una ayuda rápida con opciones y acciones brevemente explicadas y man dpkg
abrirá el manual de dpkg detallado.
Por ejemplo si obtenemos el paquete codeblocks_10.05-2_i386.deb
correspondiente al editor codeblocks 10.05 y queremos instalarlo en nuestra PC seguimos los siguientes pasos:
- Abrimos una terminal y nos “pocisionamos” (cd) en la carpeta donde está este paquete.
- Escribimos en la terminal:
sudo dpkg --install codeblocks_10.05-2_i386.deb
y escribimos la contraseña de superusuario.
- Si no tenemos conflictos con dependencias se nos informará de cuanto espacio ocupará el programa una vez instalado y nos preguntará si queremos continuar, aceptamos exribiendo
Y
óS
.
Con estos pasos dpkg
' instalará automáticamente el paquete y una vez terminada la instalación podremos ejecutar el programa codeblocks
. El software que se instala no tiene un directorio fijo por que esto depende del programa o librería que instalamos. Aunque podremos encontrar el ejecutable del programa instalado generalmente en el directorio /usr/bin
.
El proceso para instalar bibliotecas es el mismo con dpkg
ya que las librerías también son empaquetadas en archivos .deb
.
Si existieran problemas de dependencias (programas o librerías que faltan) dpkg
no instalará el programa y nos mostrará un mensaje de error con las dependencias no satisfechas. Si sólo usamos dpkg
tendríamos que buscar esas dependencias manualmente en internet u obtenerlas de alguna forma. Se pueden obtener muchos paquetes de instalación en el repositorio Debian en http://www.debian.org/distrib/packages o http://packages.debian.org/stable/.
Afortunadamente existen otras herramientas de más alto nivel como apt
y synaptic
que se encargan de resolver dependencias simplificando el proceso de instalación.
APT
APT es una suite de herramientas que incluyen el programa apt-cache
que provee información de paquetes y dependencias, apt-get
se encarga de realizar operaciones de instalación, búsqueda de dependencias, actualización, y desinstalación de paquetes de software.
A diferencia de dpkg
, APT
puede resolver dependencias lo que quiere decir que encuentra los programas que no están en el computador pero hacen falta para instalar un paquete.
Esta tarea de búsqueda de dependencias se hace comprobando en una lista de repositorios que se especifíca en el archivo /etc/apt/sources.list
. Si se cuenta con conexión a Internet aceptable, la instalación y actualización de software es muy sencilla, por que APT
utilizará la lista de repositorios en /etc/apt/sources.list
para buscar todos los paquetes y en este archivo se incluye la dirección del sitio oficial de la distribución (en este caso Debian7) que contienen una gran cantidad de paquetes estables y probados.
apt-cache
si sólo queres información de un paquete a instalar apt-cache esta diseñado para eso
por que usa el caché del sistema manejador de paquetes, este programa se abre vía línea de comandos y su sintaxis es:
<code> apt-cache [opciones] paq1 [paq2 ...]</code>
Donde paq
es el paquete que pueden ser varios separados por un espacio. Las opciones escenciales de apt-cache
son:
showpkg
→ Muestra información del paquete.stats
→ Muestra estadísticas del paquete como cuantas dependencias ya están instaladas y otros.unmet
→ Busca y muestra las dependencias faltantes.- Por ejemplo:
apt-cache unmet samba
que muestra:
El paquete samba versión 2:3.6.3-2ubuntu2.9 tiene dependencias incumplidas: Reemplaza: samba-common (<= 2.0.5a-2) Reemplaza: samba-common:i386 (<= 2.0.5a-2)
pkgnames
→ Muestra todos los nombres de paquetes, si seguido depkgnames
se escribe un párametro como por ejemploapt-cache pkgnames recor
monstrará todos los paquetes que empiezan con ese parámetro, en este caso mostró:
recorditnow recordmydesktop
apt-get
Este programa apt-get
permite instalar paquetes rápidamente buscando en /etc/apt/sources.list
y como generalmetne este acrhivo contiene la lista de repositorios accesibles por internet, con una buena conexión a internet es muy fácil realizar esta tarea.
Sin embargo, en /etc/apt/sources.list
se puede especificar otras direcciones como un DVD, redes de área local, etc, esto lo describiremos más adelante.
La sintaxis de apt-get
es:
apt-get [opciones][orden] [nombre(s) de paquete(s)]
apt-get
tiene una larga lista de opciones que se pueden ver rápidamente escribiendo apt-get -h
o man apt-get
.
Si queremos instalar el programa filezilla
que es un gestor <acronym title="File Transfer Protocol">FTP</acronym> usando apt-get
deberíamos escribir lo siguiente:
sudo apt-get install filezilla
Como a se sabe no se puede instalar o desinstalar progras sin ser superusuario por eso sudo
.
Lo que esta ordén hace es indicarle a apt-get
que instale el programa filezilla, pero a diferencia de dpkg
, al encontrar dependencias faltantes apt-get
las buscará en los repositorios de /etc/apt/sources.list
. Una vez las encuentre, procederá a descargar el paquete junto a todas sus dependencias faltantes. Una vez descargue las dependencias se procederá a la instalación del programa.
Al terminar todo este proceso, tendremos el programa en este caso filezilla
instalado y listo para usar todo con una simple línea.
Para desinstalar un programa también podemos usar apt
con la opción remove así:
sudo apt-get remove filezilla
Que desinstalará filezilla
.
Synaptic
Synaptic es un programa GUI (con interfaz gráfica de usuario) al igual que apt
resuelve dependencias y facilita el proceso de instalación. Como apt
, snynaptic
busca los paquetes en la lista de repositorios especificada en /etc/apt/sources.list
. Si synaptic no está instalado hay que hacerlo primero con
sudo apt-get install synaptic
La interfaz de Synaptic es así:
Para instalar un programa hay que escribir su nombre o una palabra clave con la que este relacionado en el filtro de búsqueda y aparecerá una lista de paquetes que coinciden.
Por ejemplo para instalar zim
(un programa editor de texto basado en wikis), luego de escribir zim para instalarlo primero se hace click derecho en su nombre y se escoge la opción marcar paquete para instalar. Synaptic buscará automáticamente sus dependencias y nos preguntará si también queremos instalarlas, aceptamos y al final deberá quedar una pantalla similar a esta:
Finalmente se hace click en el botón aplicar, synaptic descargará los paquetes marcados y los instalará. Este software tiene muchas opciones y aprovecharemos otras de estas a lo largo del curso.
Usando el script generador de descargars (cunado no se tiene conexión a Internet)
Si no se cuenta con conexión a Internet y se desea instalar un programa específico, se puede usar synaptic
para ayudarnos a saber que paquetes de software hacen falta, para esto usaremos una funcionalidad que se llama generar script de descarga de paquetes siguiendo estos pasos:
- Escribir el nombre del programa.
- Marcar el porgrama para su instalación.
- Marcar también las dependencias que synaptic encontró automáticamente.
- Ir a Archivo → Generar un Script de descarga de paquetes.
- Guardar el Script en un medio extraíble ().
- Ejecutar el Script en otra computadora con conexión a Internet.
El contenido del script es una serie de comandos con los paquetes faltantes por ejemplo así:
#!/bin/sh
wget -c http://us.archive.trisquel.info/trisquel/pool/main/g/gnome-python-extras/python-gtkspell_2.25.3-11_i386.deb
wget -c http://us.archive.trisquel.info/trisquel/pool/main/z/zim/zim_0.54-1_all.deb
Una vez tengamos los archivos .deb
descargados, los copiamos en una carpeta vacía en nuestra PC, abrimos una terminal y nos poscicionamos en esa carpeta y ejecutamos el siguiente comando:
sudo dpkg --install *.deb
dpkg
instalará todos los paquetes que terminen en .deb
, es decir los paquetes que descargamos. Una vez instalados, el programa que queríamos utilizar ya puede usarse.
Agregando software desde fuentes externas
Se trata de modificar el origen o repositorios oficiales según nuestra necesidad. Puede darse el caso que por ejemplo se este utilizando una una versión no actual de una distribución. Al instalar GNU/Linux el archivo /etc/apt/sources.list
viene escrito con una lista de repositorios oficiales por defecto de la versión de la distribución. Si por alguna razón estos repositorios ya no tienen soporte o no se actualizan con la rapidez que buscamos podemos hacer añadir a /etc/apt/sources.list
otra lista de repositorios para que busque determinados paquetes.
Por ejemplo este es el contenido del archivo sources.list
que viene por defecto en la distribución Trisquel mini 6.0:
# Trisquel repositories for supported software and updates deb http://us.archive.trisquel.info/trisquel/ toutatis main deb-src http://us.archive.trisquel.info/trisquel/ toutatis main deb http://us.archive.trisquel.info/trisquel/ toutatis-security main deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main
Contiene la lista de repositorios oficiales para el manejo de software por defecto. Pero supongamos que estamos en el caso en que nuestra PC es “antigua” y cierto programas de los repositorios de la version 6.0 de Trisquel no funcionan correctamente en nuestra computadora. Entonces decidimos probar una versión anterior en este caso Trisquel 5.0 para ver si los paquetes de esa versión funcionan correctamente en nuestra computadora.
Buscando en Internet se puede encontrar repositorios de las versiones anteriores de las distribuciones entonces encontramos que la dirección <acronym title="Uniform Resource Locator">URL</acronym> de esos repositorios son:
deb http://archive.trisquel.info/trisquel dagda main deb-src http://archive.trisquel.info/trisquel dagda main deb http://archive.trisquel.info/trisquel dagda-updates main deb-src http://archive.trisquel.info/trisquel dagda-updates main deb http://archive.trisquel.info/trisquel dagda-security main deb-src http://archive.trisquel.info/trisquel dagda-security main deb http://archive.trisquel.info/trisquel dagda-backports main deb-src http://archive.trisquel.info/trisquel dagda-backports main
Correpsondientes a Trisquel 5.0.
Ahora para indicarle a nuestro sistema manejador de paquetes que busque en los repositorios de Trisquel 5.0 en lugar que en los de la versión 6.0 editamos el archivo /etc/apt/sources.list
con privilegios de superusuario y lo dejamos así:
# Trisquel repositories for supported software and updates #------ Estos son los repositorios de la Versión 6.0 todos van a ser comentados con " # " para que no se tomen en cuenta ----- #deb http://us.archive.trisquel.info/trisquel/ toutatis main #deb-src http://us.archive.trisquel.info/trisquel/ toutatis main #deb http://us.archive.trisquel.info/trisquel/ toutatis-security main #deb-src http://us.archive.trisquel.info/trisquel/ toutatis-security main #deb http://us.archive.trisquel.info/trisquel/ toutatis-updates main #deb-src http://us.archive.trisquel.info/trisquel/ toutatis-updates main #deb http://us.archive.trisquel.info/trisquel/ toutatis-backports main #deb-src http://us.archive.trisquel.info/trisquel/ toutatis-backports main #------------ Estos son los repositorios de la Versión 5.0 los que ahora queremos probar ---------------- deb http://archive.trisquel.info/trisquel dagda main deb-src http://archive.trisquel.info/trisquel dagda main deb http://archive.trisquel.info/trisquel dagda-updates main deb-src http://archive.trisquel.info/trisquel dagda-updates main deb http://archive.trisquel.info/trisquel dagda-security main deb-src http://archive.trisquel.info/trisquel dagda-security main deb http://archive.trisquel.info/trisquel dagda-backports main deb-src http://archive.trisquel.info/trisquel dagda-backports main
Lo que hicimos fue copiar los repositorios de la 5.0 y pegar en /etc/apt/sources.list
, comentando los originales. Una vez guardado podemos ahora instalar software de la versión 5.0 usando synaptic
, apt-get
u otra herramienta.
Editar /etc/apt/sources.list
es muy versátil pudiendo especificar no sólo sitios oficiales.
- Podemos añadir listas de repositorios de otras distribuciones con paquetes
.deb
. - Podemos añadir direcciones locales (de nuestra computadora o medio extraíble como CD/DVD)
- Podemos añadir direcciones de una LAN (Red de área local)
Compartición de bibliotecas
Al igual que los programas las bibliotecas en GNU/Linux tambíen se comparten, así logra un menor consumo de recursos, para entender esto mejor se deben entender algunos conceptos:
Lo que se conoce como bibliotecas son colecciones de funciones implementadas que se usan por programas y son llamadas por estos según sea necesario. Los progradores son los que escogen que bibliotecas usar para facilitarse el trabajo de programación en lugar de codificar todo ellos mismos. La biblioteca más usada en GNU/Linux es libc
(C library) y muchos programas utilizan sus funciones lo que facilita el desarollo de nuevo software usando libc
para que haga tareas comunes pero que codificar desde cero sería un esfuerzo colosal.
Casi la totalidad de los paquetes distribuidos en GNU/Linux no incluyen estas bibliotecas, en lugar de eso listan las bibliotecas que usan como dependencias. Al hacer esto se permite reutilizar la biblioteca si otro programa la utiliza en lugar de instalarla multiples veces. Al hacer esto se logra entre otras cosas:
- Reducir el uso de espacio en el disco duro y memoria RAM.
- Si muchos programas usan la misma biblioteca en general se obtienen mejoras de rendimiento, cuando la biblioteca se actualiza.
En windows las bibliotecas dinámicas .dll
son similares a las bibliotecas compartidas pero en GNU/Linux tiene la extensión .so
que viene de shared object (objeto compartido). En cambio una biblioteca que no se comparte se conoce como biblioteca estática y tiene la extensión .a
.
Aunque se obtiene muchas mejoras en rendimiento y uso de memoria al compartir bibliotecas, se pueden tener algunos problemas:
- Cuando se actualiza una biblioteca, algunos programas pueden funcionar de forma incorrecta o dejar de funcionar.
- Si por error se borran las bibliotecas de las que dependián muchos programas esos programas pueden dejar de funcionar.
- En un caso extremo el sistema podría dejar de iniciarse.
El archivo /etc/ld.so.conf
donde se especifican las rutas donde el sistema debe buscar bibliotecas compartidas y aquí se pueden adicionar rutas de confianza adicionales para la búsqueda de bibliotecas.
Las bibliotecas también tienen una utilidad para mostrar dependencias y es el comando ldd
. Por ejemplo si tenemos instalado el programa anjuta
(IDE de desarrollo) para ver de que bibliotecas depende ejecutamos el comando:
ldd -v /usr/bin/anjuta
Qué mostrará en pantalla con detalle las bibliotecas de las que depende anjuta
para funcionar y cual es su ubucación. Una ubicación de confianza por defecto es /lib
.
Usualmente los problemas con las bibliotecas son a causa de que el sistema no pueda encontrar la ubiación de esta, si la bilbioteca está instalada y aún así un programa no puede encontrarla posiblemente sea un conflicto con el nombre de la biblioteca por ejemplo. Para solucionar esto, se puede actualizar el cache y los links usando ldconfig
sin argumentos en con permisos de superusuario. También si esto fallará se puede crear un vínculo simbólico en caso de que haya conflictos con nombres de bibliotecas actualizadas o algo por el estilo. Esto se hace con ln
y la opción -s
que crea vínculos simbólicos. Así por ejemplo si al ejecutar un programa este espera que este instalada la biblioteca de nombre ld-linux-x86-64.so.2
pero el sistema tiene instalada la biblioteca ld-linux-x86-64.so.2.1
que por así decirlo representa la misma bilioteca pero el programa espera el primer nombre, entonces para satisfacer las expectativas del programa, abrimos una terminal en la dirección donde esta esta biblioteca y usamos en modo (root o superusuario):
ln -s ld-linux-x86-64.so.2 ld-linux-x86-64.so.2.1
Que creará un vínculo simbólico entre ld-linux-x86-64.so.2.1
y ld-linux-x86-64.so.2
, así el programa se ejecutará utilizando la segunda biblioteca ld-linux-x86-64.so.2.1
que tenemos instalada, después sólo debemos ejecutar
#ldconfig
Para actualizar el caché de las bibliotecas y el vínculo que creamos quedará guardado. Ver otros sitios de interés (más abajo) para mayor información.
Introducción a la administración de procesos
Cuando se ejecuta un programa al mismo tiempo se crea un proceso que son genstionados por el SO. En GNU/Linux es posible identificar, manejar procesos en en primer y segundo plano, matar procesos y ajustar prioridades. Este es un tema extenso y en este curso veremos como identificar y matar procesos brevemente.
Identificar procesos
El comando ps
es una utilidad muy poderosa para esto si abrimos una terminal y lo usamos podemos obtener información importante que nos ayudará a tener mejor idea de como se manejan los procesos en la máquina y su sintaxis es simple pero posee una gran cantiad de opciones y aplicaciones.
ps [opciones]
Aquí algunas opciones:
-A
→ Muestra todos los procesos.--user [usuario]
→ Muestra los procesos del usuario especificado.-f
→ Información detallada.u
→ Detallado orientado a usuario.--help
→ Información rápida--forest
→ Muestra en forma de árbol de procesosw
→ Se ajusta al ancho de la pantalla-l
→ salida larga con muchos detalles.
Las opciones pueden combinarse según su tipo, donde las opciones con -
son opciones UNIX, las que no tienen guión son opciones BSD y las con dos guiones --
son GNU. Sin embargo pueden darse conflictos al combinar opciones que no son del mismo tipo.
por ejemplo si escribimos:
ps -Af
Nos mostrará todos los procesos de todos los usuarios detalladamente.
ps --user gensu --forest
Nos mostrará todos los procesos del usuario gensu
en forma de árbol de procesos
ps u -A --user root --forest
Mostrará todos los procesos del usuario root
detallado orientado al usuario que los usa y en forma de árbol.
La salida de ps
se muestra en columnas entonces puede que la pantalla no alcance para ver todo el detalle, para eso conviene guardar esa salida en un archivo y luego revisar el archivo con el editor de textos de preferencia, su puede hacer con:
ps -Al --forest > salida.txt
Entonces, si revisamos el contenido del archivo salida.txt
y en realidad de cualquier salida de ps
veremos estas columnas que representan datos importantes sobre los porecesos.
Columna |
Función |
---|---|
USER | El nombre del usuario que ejecuta el programa |
PID | Un número que identifica al proceso |
PPID | Un número que identifica al proceso padre de este proceso |
TTY | Terminal bajo la que corre el proceso |
%CPU | Uso del CPU |
%MEM | Uso de la memoria |
NI | Piroridad del proceso (se muestra con -l ) mientras menor el número más prioridad tiene
|
CMD* | El comando usado para abrir el proceso |
El PID es un dato muy importante por que a partir de este se puede manejar el procesos y todos sus derivados ya sea para analizarlos, matarlos, cambiarles la prioridad, etc usando las herramientas adecuadas.
Existe tambíen otro programa llamdo top
que muestra una tabla completa con los procesos del sistema se termina con ctrl+c
.
Matando procesos
Para matar un proceso es bueno saber el PID que le corresponde y usar la herramienta kill
que envía señales para matar a un proceso identificado por su PID. Es importante saber que un usuario normal no puede matar procesos de un superusuario o grupo de administradores, en cambio un superusuario tiene todo el control.
La sintaxis de kill es:
kill -s [señal] pid
Si no se especifica señal por defecto es 15 SIGTERM que sale del proceso pero permite cerrar archivos abiertos, se pueden ver otras señales con man kill
.
kill
es útil para terminar procesos problemáticos, por ejemplo si la computadora se cuelga o está extrañamente lenta para terminar con el proceso que ocasiona esto seguimos estos pasos:
- Abrimos una terminal verdadera (aunque puede ser también un emulador de terminal aunque esto no siempre es posible debido al uso del CPU) con
ctrl+alt+F1
para entrar en la terminal yctrl+alt+F7
octrl+alt+F8
para volver a la interfaz gráfica. - Nos logueamos con nombre de usuario y contraseña (preferiblemente superusuario)
- Ejecutamos
top
óps
como se describe más arriba. - Revisamos que proceso esta consumiendo la mayor cantidad de CPU o demasiada memoria RAM que puede ser el causante de que la PC haya entrado en ese estado.
- Para rastrear completamente al proceso podemos usar la opción
--forest
en ps y ver a que procesos está asociado el proceso problemático. - Ya detectando ese proceso, será necesario tomar en cuenta su PID.
- Ejecutamos
kill
con una señal para terminarlo poniendo como argumento el PID del proceso. - Una vez terminado el proceso comprobamos que la PC vuleve a funcionar correctamente volviendo a la interfaz gráfica con (ctrl+alt+F7)
Monitor de sistema
Adicionalmente para terminar un proceso por su nombre se puede usar la herramienta killall
en lugar de kill
aunque existen también programas GUI para manejar procesos uno de ellos es gnome-system-monitor
, esta herramienta permite administrar los procesos de manera mas “amigable”.
Otros sitios de ayuda
- www.debian.org/doc/debian-policy/ch-sharedlibs.html
- http://download.savannah.gnu.org/releases/lpi-manuals/ (liros en inglés)
- http://trisquel.info/es/wiki/instalaci%C3%B3n-de-paquetes-sin-conexi%C3%B3n-internet-mediante-keryx-0 (otra guía para instalación sin internet)