Administración de software
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 los binarios 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 biblioteca 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 bibliotecas también son empaquetadas en archivos .deb
.
Si existieran problemas de dependencias (programas o bibliotecas 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
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: apt-cache [opciones] paq1 [paq2 ...]
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 otras.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 ejemplo$ apt-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
.
filezilla
que es un gestor FTP usando apt-get
deberíamos escribir lo siguiente: $ sudo apt-get install filezilla
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.
apt
con la opción remove así: $ sudo apt-get remove filezilla
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
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.
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
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
/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
/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)
Hay otras posbilidades, sin embargo es recomendable śolo añadir direcciones confiables como medida de seguridad, ya que al añadir un sitio estamos diciendolé al sistema que confie plenamente en el contenido que este sitio alberga.
Usando repositorios locales (UMSA)
Como no todos cuentan con internet y más aún con buena conexión a internet como para realizar la descarga de paquetes para instalar programas hemos habilitado en un servidor de la red local de la carrera de informática de la UMSA que contiene los repositorios de las ramas main y contrib de Debian 7.2.0 para arquitecturas i386
y amd64
.
Este servidor puede usarse como repositorio local para que los estudiantes y docentes de esta institución descarguen programas. La velocidad de descarga no se limita a la de un internet pues se usa la red local de la carrera.
Para instalar programas usando el servidor de la UMSA se necesitan una serie de pasos simples pero teniendo en cuenta que el repositorio de programas y bibliotecas funcionará correctamente sólo en versiones de Debian 7.2.0, otras distribuciones o versiones de esta distribución podrían no funcionar correctamente al instalar programas de este repositorio.
Pasos para usar el repositorio local
Estar conectado a la red local de la carrera de la UMSA
Conectar la PC o laptop con Debian 7.2.0 a la red local.
Editar sources.list
El archivo que contiene las direcciones de repositorios /etc/apt/sources.list
para el manejador de paquetes de Debian deberá ser modificado, añadiendo las siguientes líneas a este archivo:
#repositorio local de la carrera UMSA i386
deb http://192.168.17.253/dvd32-1/debian wheezy main contrib
deb http://192.168.17.253/dvd32-2/debian wheezy main contrib
deb http://192.168.17.253/dvd32-3/debian wheezy main contrib
deb http://192.168.17.253/dvd32-4/debian wheezy main contrib
deb http://192.168.17.253/dvd32-5/debian wheezy main contrib
deb http://192.168.17.253/dvd32-6/debian wheezy main contrib
deb http://192.168.17.253/dvd32-7/debian wheezy main contrib
deb http://192.168.17.253/dvd32-8/debian wheezy main contrib
deb http://192.168.17.253/dvd32-9/debian wheezy main contrib
deb http://192.168.17.253/dvd32-10/debian wheezy main contrib
#repositorio local de la carrera UMSA amd64
deb http://192.168.17.253/dvd64-1/debian wheezy main contrib
deb http://192.168.17.253/dvd64-2/debian wheezy main contrib
deb http://192.168.17.253/dvd64-3/debian wheezy main contrib
deb http://192.168.17.253/dvd64-4/debian wheezy main contrib
deb http://192.168.17.253/dvd64-5/debian wheezy main contrib
deb http://192.168.17.253/dvd64-6/debian wheezy main contrib
deb http://192.168.17.253/dvd64-7/debian wheezy main contrib
deb http://192.168.17.253/dvd64-8/debian wheezy main contrib
deb http://192.168.17.253/dvd64-9/debian wheezy main contrib
deb http://192.168.17.253/dvd64-10/debian wheezy main contrib
Guardar los cambios en el archivo.
Actualizar los cambios en el sistema manejador de paquetes
Como hemos modificado /etc/apt/sources.list
, hace falta informarle al sistema manejador de paquetes de esto:
# apt-get update
Esta orden acutalizará la base de datos del sistema manejador de paquetes para que podamos hacer uso del nuevo repositorio.
Instalar programas y/o bibliotecas
Hecho todo lo anterior sólo hace falta usar el servidor como repositorio de descarga para instalar programas por cualquiera de los métodos descritos anteriormente.
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.
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
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
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
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
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]
-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.
$ ps -Af
$ ps --user gensu --forest
gensu
en forma de árbol de procesos $ ps u -A --user root --forest
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
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 tty (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”.
Construcción de un prorama desde su código fuente
Es la mejor opción para instalar un programa si se trata de obtener el mejor rendimiento y personalización.
Esto es, obtener el código fuente del programa y construir los binarios usando herrameintas de construcción. Los binarios obtenidos estarán de acuerdo a como se configuran las opciones de construcción que uno mismo puede ajustarlas, estos binarios son de mejor calidad para nuestra computadora por que se construyen de acuerdo a sus características y necesidades específicas.
Una herrameinta de construcción quizá la más utilizada es GNU Make o también llamada make.
(continuar)
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)