0% encontró este documento útil (0 votos)
31 vistas24 páginas

Conceptos Básicos de Archivos en Linux

Cargado por

Rudy Arias
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas24 páginas

Conceptos Básicos de Archivos en Linux

Cargado por

Rudy Arias
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CENFOTEC

Diplomado en Tecnologías de Desarrollo de Software


Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

2. Administración de Procesos.

Qué es un proceso? lo primero que se nos viene a mente es un programa en ejecución.

Pero eso es todo? Que hay detrás de ese concepto?, podría ser un problema?, cómo lo

convertimos en un aliado?. Veamos que pasa!!

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 1 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

2.1. Algunos conceptos previos.


Antes de ver procesos, debemos aprender a movernos entre los directorios del sistema, y
finalmente, ya estaríamos preparados para entender qué es un proceso, desde el punto de
vista de los sistemas Linux.

El sistema de archivos.
En esta parte veremos a los sistemas de archivos desde una perspectiva de usuario, más
adelante lo veremos desde el punto de vista de arquitectura.
Archivo.- Un archivo es la unidad fundamental del sistema de archivos del Linux. Existen
tres diferentes clases de archivos: Ordinarios, Especiales y Directorios.
• Archivos Ordinarios.- Se conoce así a casi todos los archivos que depositamos en el
disco, documentos, programas hechos para el computador y los ejecutables. Estos
archivos pueden crearse, cambiarse, o borrarse cuando lo desee.

$ ls -l
total 196
-rw------- 1 root sys 23552 May 13 10:53 Ex01108
drwxr-xr-x 2 jmatias informix 2048 May 8 13:56 gif
drwxr-xr-x 2 jmatias informix 3072 May 8 13:58 gif2
-rw-r-Sr-- 1 jmatias informix 34418 Aug 23 1996 graphics
drwxr-xr-x 3 jmatias informix 512 Jul 9 1996 INTRO
-rw-r--r-- 1 root sys 4 May 17 21:02 rem-root
-rw------- 1 root sys 3072 May 13 10:52 Rx01108
drwxr-xr-x 2 jmatias informix 512 May 8 13:57 SAI
drwxr-xr-x 2 jmatias informix 512 May 8 13:57 SAII
drwxr-xr-x 2 root sys 1024 May 17 21:12 xxx
sr--r--r-- 1 root sys 0 May 8 13:53 00304dos
Salida del comando “ls -l”, mostrando archivos en un directorio

• Archivos de tipo Directorio.- Los directorios son un tipo especial de archivos; un


directorio contiene los nombres (file name) y números de identificación (nodo-i), de cada
uno de los archivos que contiene.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 2 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Linux considera los directorios como archivos nodo-i


Nombres de
convencionales. Podemos decir entonces que 151
Archivos
prueba
los directorios son archivos de usuarios donde
11 temporal
se almacenan nombres de otros archivos.
5321 datos
Cada usuario cuando se le inscribe en el
sistema, se le asigna su propio directorio en el 432 vacio
disco de manera que puede fácilmente 0 a.b.c.d
localizar sus archivos. :
:
NOTA: En el caso de la salida anterior, los
archivos que tienen “d” en el primer carácter
en el listado, son de tipo directorio, mientras 1752 [Link]
que los archivos que tienen “-” en el primer
carácter, son archivos ordinarios. directorio : /u/datos/tempo
• Archivos Especiales.- Cada uno de los
dispositivos físicos en el Sistema Unix (o
Linux), como son el disco duro, la unidad de diskettes, la unida de CD, impresoras,
terminales, etc. tiene asignado un Archivo Especial (special file) que permite que el
sistema pueda manejarlos de forma transparente para el usuario.

:
brw-rw-rw- 2 bin bin 2, 64 Jan 12 1997 fd0
:
brw------- 1 sysinfo sysinfo 1, 0 May 7 1996 hd00
:
crw-rw---- 1 informix informix 1, 44 May 13 10:51 dbspace1
:
crw------- 2 bin bin 6, 0 May 17 21:02 lp
:
br--r----- 1 root backup 1, 42 Apr 10 1997 root
:
crw--w--w- 1 root sys 58, 0 May 17 21:05 ttyp0
:
Listado parcial del directorio /dev de un SCO Unix

Tomamos como referencia "fd0" (archivo de control de la unidad primaria de diskettes),


vemos que tiene dos números que lo identifican : 2, 64, los cuales se llaman major y
minor number (respectivamente), el primer valor (2) representa la familia (diskettes),
mientras que el segundo valor (64) es el número del miembro dentro de la familia.
Observe que los dispositivos "hd00", "dbspace1", "root" pertenecen a la misma familia
(major number=1).

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 3 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

En resumen, en los sistemas Unix y Linux tenemos los siguientes tipos de archivos :
1. Archivos Regulares. Detallado.
2. Archivos tipo Directorio. Detallado.
3. Archivos especiales. Detallado.
4. Archivos de tipo Fifo son pipes con nombre. Son propios de System V, no existen en
los sistemas BSD.
5. Archivos de Enlaces simbólicos. Es un archivo que contiene un puntero a otro archivo.
Existen en BSD Unix 4.3 y también en los Unix de la familia SCO (a pesar de ser de tipo
System V)
6. El Soket es un archivo especial de BSD Unix 4.3.
/

dev etc lost+found shlib tmp usr


bin var
mnt
boot lib home root

Filesystem principal de Linux

Estructura Jerárquica de Archivos

La estructura del conjunto de todos los archivos del sistema, es una estructura de árbol
invertido, como se puede apreciar en la figura.
Trasladarse a un directorio equivale a abrir una rama dentro del árbol.
En el sistema Linux, todos los archivos forman parte de la jerarquía. Cualquier archivo de
esta estructura es parte de una red de directorios conectados.

Rutas de acceso a archivos y directorios (path's y fullpathname).


La localización de un archivo se logra mediante un camino de acceso que parte desde
directorio raíz y recorre la lista de directorios intermedios hasta llegar al archivo deseado.
Los distintos nombres que componen el camino de acceso de un archivo están separados
por el carácter "/", por ejemplo :
/home/silvia/finanzas/control.c

Partiendo del directorio raíz / se recorren los directorios intermedios home, silvia y finalmente
finanzas que asocia el nombre control.c a un archivo que contiene los fuentes de un
programa en C.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 4 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Este método de caminos de acceso permite tener archivos y directorios con los mismos
nombres en varios lugares del árbol, con la única condición que no puede haber dos
caminos de acceso iguales.
La ubicación de archivos mediante sus caminos de acceso absolutos puede resultar algo
lenta para el usuario cuando el número de directorios es grande.
Además durante el trabajo normal de un usuario o de una aplicación, generalmente se
utilizan archivos que se encuentran solo en el directorio actual o en los directorios
inmediatamente superior o inferior, por este motivo, el sistema asocia, de forma permanente,
a todo proceso un directorio actual que agiliza la designación de un archivo mediante un
camino de acceso relativo a ese directorio actual.
Ejemplo :

Dir. Actual Camino Absoluto Camino relativo


--------------------------------------------------------------------
/home/silvia /home/silvia/prg/ejm.c prg/ejm.c
/home/caja /home/caja/menu menu
/ /etc/default/log etc/default/log

En general, a todo usuario, en cuanto entra al sistema, se le asigna un directorio hogar


(home directory) que le sirve de base para construir su propio subdirectorio de directorios y
archivos. Al comienzo de cada sesión, el sistema asumirá al directorio del usuario como su
directorio actual para los procesos que desee ejecutar.
Todo directorio en el sistema tiene, por lo menos, dos entradas:

"." nombre asociado al propio directorio.


".." nombre asociado al directorio padre o precedente.

Estas dos entradas pueden reemplazar, en los caminos de accesos relativos, a los nombres
actuales de los directorios como veremos en el siguiente ejemplo:

Directorio Actual = /home/silvia/finanzas


Directorio Destino = /home/programas/cursos
Camino Relativo = ../../programas/cursos

En conclusión, para poder llegar a un archivo (o directorio) en especial dentro de toda la


estructura de directorios del Linux, tenemos dos posibilidades :
• Ruta relativa, o camino relativo; se toma como punto de partida, la posición actual (.)

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 5 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

dentro de la estructura de directorios.


• Ruta absoluta, o camino absoluto; se toma como punto de partida, la posición del
directorio raíz (/) del sistema.

Estructura del directorio raíz ( / ) de Linux.


A continuación se muestran los principales archivos y directorios que conforman el directorio
raíz (root) de Linux.
• /bin : Residen los archivos binarios (ejecutables) del sistema.
• /boot : Es el archivo de carga (booting) del sistema.
• /dev : Directorio de los archivos especiales de control de dispositivos del sistema.
• /etc : Directorio de archivos y herramientas para la administración y configuración
del sistema. Son los "etcéteras" del sistema.
- Scripts de arranque/parada del sistema.
- Archivos de control de terminales.
- Autenticación de usuarios.
- Configuración del kernel.
- Parámetros default para varios procesos del Sistema Linux.
• /lib : Librerías de rutinas de soporte del sistema.
• /lost+found: Directorio donde se almacenan los archivos recuperados/reconstruidos,
que se generan con el utilitario fsck, al ser ejecutado luego de una caída del sistema.
• /mnt : Directorio de montaje de filesystem’s temporales.
• /shlib : Share Library. Librerías compartidas.
• /tmp : Directorio donde el sistema almacena sus archivos temporales.
• /usr : Directorio donde residen las aplicaciones instaladas.
• /home : Generalmente es el directorio de montaje del filesystem de usuarios.
HOME Directory.- Es "nuestra casa", el home directory es un subdirectorio del directorio
raíz (root) en el que entramos cada vez que hacemos login (ingresamos) en el sistema; es
donde van a residir nuestros archivos del usuario. Generalmente tiene el mismo nombre que
el usuario propietario.
Por ejemplo, si mi nombre de usuario es "jmatias", es probable que mi home directory
($HOME en bash o ksh) sea /home/jmatias, a menos que el administrador especifique otra
cosa.
El $HOME del usuario jmatias

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 6 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Permisos.
La privacía y seguridad de los archivos y directorios del sistema de archivos del Linux esta
basada en la confiabilidad de los permisos que estos tienen.
Un filesystem seguro tiene los permisos correctamente establecidos; estos permisos limitan
que cualquier usuario pueda escribir en cualquier parte del filesystem, con eso podremos
crear copias de seguridad y mantener el espacio libre con suma facilidad, si estos permisos
no son los correctos, los usuarios podrán escribir en cualquier parte del filesystem, o,
cambiar o remover archivos de configuración.
Adicionalmente el Administrador del Sistema (root) puede incrementar la seguridad del Linux
implementando algunos scripts (programas) simples, los cuales pueden hacer las veces de
vigilantes del sistema, y crear el efecto de puertas cerradas para cualquier usuario o proceso
no autorizado.
Archivos y usuarios.- Existen tres clases diferentes de usuarios de un archivo y tres modos
diferentes de acceso al archivo. Estas tres clases de usuarios figuran en la siguiente tabla:

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 7 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

CLASE DE USUARIO EXPLICACION

PROPIETARIO (u) Usuario que ha creado el archivo.

Grupo de usuarios, normalmente relacionados a un Departamento


GRUPO (g) o función. Un usuario de este tipo puede acceder al archivo,
pero no puede cambiar quien puede acceder al archivo.

OTROS (o) Cualquier otro usuario del sistema.

Para cada una de las tres clases de usuarios existen 3 modos de acceso diferentes. Estos
tres modos figuran en la tabla siguiente:

MODO ARCHIVO ORDINARIO ARCHIVO DIRECTORIO

LECTURA (r) Permite examinar el Permite listar los archivos


contenido del archivo contenidos en el directorio.

ESCRITURA(w) Permite cambiar el Permite crear y borrar archivos.


contenido del archivo.

EJECUCIÓN(x) Permite ejecutar el Permite buscar en el directorio.


archivo como comando

Especificación de los permisos.- Para especificar qué usuario puede tener acceso a los
archivos y qué permisos tiene sobre ellos, es necesario designar los atributos de lectura,
escritura y ejecución para cada uno de los tres grupos de usuarios existentes: propietario
grupo y otros. Estos permisos tienen que ponerse en el mismo orden que aparecen cuando
se utiliza el comando ls -l ; es decir:
rwx rwx rwx
| | |
| | Permisos para otros usuarios
| |
| Permisos para el grupo de usuarios
|
Permisos para el usuario propietario

Siempre que esté presente una letra (r, w, x), el usuario tiene activo el permiso, cuando en
su lugar aparece un guión (-), el usuario no tiene el permiso correspondiente.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 8 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Permisos del archivo [Link]

Obsérvese los permisos correspondiente a los usuarios: propietario, grupo, y, otros.


Linux es un sistema operativo que basa gran parte de su potencia en su sistema de archivos
(filesystem), de allí la importancia de entender su funcionamiento.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 9 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

2.2. Comandos básicos.


Comandos Básicos (date, cal, who, w)

• date.- Muestra la fecha y la hora del sistema.

Esta es la salida del comando date, muestra la fecha actual del sistema.
• cal.- Muestra el calendario.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 10 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Este comando fue ejecutado sin argumentos ni opciones. Veamos como reacciona el mismo
comando con dos opciones :
En este caso vemos el calendario del mes de Diciembre del 2002.

• who: Muestra quienes están usando el sistema. Veamos el comando sin opciones ni
argumentos:

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 11 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

• w.- Es una variante muy utilizada de who, su característica principal es que muestra qué
hace cada usuario (What), y me muestra el promedio de carga de mi sistema Linux (load
average).
Observe que en la primera fila se muestra la horra actual, el tiempo que lleva encendido
el sistema, el numero de usuarios y el promedio de carga.
Mientras que en la primera columna se muestra los nombres de los usuarios conectados,
en la segunda columna, el terminal al cual se conectaron, la tercera el equipo desde el
cual se conectaron, luego se muestra la fecha de conexión, el tiempo ocioso (IDLE), dos
parámetros que no discutiremos (JCPU y PCPU) y finalmente que es lo que esta
haciendo cada usuario en este momento.
El ejemplo más notorio a este nivel es el comando ls el cual será detallado con más
precisión algunas páginas adelante.

• ls muestra los archivos que existen en un directorio, note que se ordenan alfabéticamente
por columnas.

NOTA: Normalmente ls, muestra los archivos según un código de colores, Ud. podrá
observarlo en su pantalla, obviamente en este manual no se aprecian los mismos, han sido
anulados por motivos técnicos.
El comando ls con una opción (-s), sin mas argumentos, muestra la información anterior, y
adicionalmente, el número de bloques asignados a cada archivo.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 12 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Observe, por ejemplo que el archivo [Link] tiene asignados 8 bloques de 1Kb
cada uno, eso quiere decir que podrá crecer hasta 8kb antes de que el sistema le asigne
otro bloque mas.

El comando ls con una opción (-s) y un argumento (/). Muestra del directorio raíz.

NOTA: Linux crea los directorios con 4 bloques de 1Kb cada uno.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 13 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Comandos auxiliares (id, logname, tty, uname)


• id.- Muestra la identificación del usuario actual, uid (user ID), gid (group ID)

Observe que el usuario jmatias (UID=500), tiene como login group informix (GID=500), y
adicionalmente pertenece a los grupos curso (GID=501) y postgress (GID=26).

• logname.- Muestra el nombre con el que el usuario ingresó al sistema.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 14 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

• tty.- Muestra el terminal actual de trabajo.

Todos los dispositivos son controlados por archivos especiales que se encuentran en el
directorio /dev, en este casp /dev/pts/2 representa un psudo-terminal , generalmente es tipo
de terminales se asignan a usuarios de consola grafica y a los usuarios que ingresan al
sistema via telnet o ssh.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 15 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

• uname.- Muestra la identificación del sistema.

Con un parámetro:
Nos muestra (en ese orden), el nombre del sistema operativo (Linux), el nombre del
computador (server), la version del kernel (2.6.9-1.667), la fecha de creacion del Kernel (Thu
Nov 2 [Link] EST 2004) y el tipo de equipo (i686 i686 i386 GNU/Linux).

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 16 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

El Manual interactivo.
Linux (al igual que TODOS los sistemas de tipo Unix) provee un Manual Interactivo en Línea,
el cual se puede invocar en cualquier momento desde la línea de comando.
Para solicitar ayuda al sistema, se debe digitar man, seguido por el nombre del acápite o
tema que deseamos ver.
Por ejemplo :
Como podemos ver, nos da una descripción detallada del comando en mención (ftp).

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 17 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

2.3. Administración de Procesos.


Ejecutar un archivo requiere seguir varios pasos.
• Primero el sistema Unix verifica los permisos del archivo para ver si Ud. es el
indicado para ejecutarlo.
• Después verifica el formato interno del archivo para ver si es un programa.
• Si el archivo es un programa, el shell empieza el nuevo proceso, y lo carga en
memoria; el nuevo proceso continúa cargando la secuencia de instrucciones
contenidas en él.

$ date_

sh
200
fork() wait() exit()
crea el proceso ret orna el co nt rol
espera ret orno

sh date
450 exec() 450
reemplaz a

Ejecución de un proceso a partir del padre

Algunos programas no son ejecutados como comandos del shell, pero corren en segundo
plano realizando tareas del sistema. A este tipo de programas se les llama demonios, todos
ellos son hijos de "init", en un "ps -ef" es fácil reconocerlos porque en la columna "TTY"
llevan un signo de interrogación ("?", System V), o un guión ("-", BSD Unix).

Otro programa muy importante es el Kernel, un programa especial al que generalmente se le


llama “linux”. A diferencia de otros programas, no es un proceso como tal, está siempre
atento a resolver las peticiones que pueda haber de algún proceso de usuario.
Todos los procesos son creados por otro que generalmente se considera como proceso
padre.
Si un proceso queda huérfano será heredado por el proceso init (PID 1).

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 18 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Cuando un proceso muere envía señales al proceso padre y otras señales distintas a sus
procesos hijos. Cuando los procesos reciben una señal pueden ejecutar una rutina o si no
existe dicha rutina se ejecutara la acción por defecto que generalmente es terminar.
La shell cuando termina envía una señal a los procesos arrancados por ella. Esto hace que
terminen, para evitar esto se utiliza el comando nohup.
Los procesos tienen un EUID (Efective User ID), y un UID normalmente ambos coinciden.
Sin embargo existe un bit de permisos que cuando esta presente en un archivo ejecutable
hace que cambie el EUID del proceso convirtiéndose en el UID del owner del archivo
ejecutable. Gracias a esto un usuario puede tomar temporalmente privilegios de
superusuario para acceder por ejemplo a archivos del sistema propiedad de root.
La forma en que un proceso arranca a otro es mediante una llamada al sistema con la
función fork() y el proceso hijo ejecuta luego una llamada exec() que no retorna nunca.
Los demonios son procesos que permanecen arrancados todo el tiempo. Generalmente son
iniciados por el proceso init cuando arranca el sistema. Algunos de ellos resucitaran
inmediatamente en caso de morir.
Un proceso puede pasar al proceso hijo una serie de variables pero un hijo no puede pasar
nada a su padre a través de variables.
Las formas de comunicación entre procesos son:
• A través de variables: Solo de padres a hijos.
• Mediante una señal: Solo indica que algo ha ocurrido no lleva información sino solo un
numero de señal.
• Mediante entrada salida: Es la forma mas corriente a nivel de shell.
• Mediante sofisticadas técnicas : Semáforos, Memoria compartida, Colas de mensajes.

El comando ps
Si Ud. está corriendo un programa, éste se ve como un proceso para el sistema. En
cualquier momento diferentes procesos son cargados y activados, uno por uno. El concepto
de programa y un proceso van de la mano, pero son diferentes.
Un proceso es lo que corre en el computador y al que se le asignan varias áreas de la
memoria, una de estas áreas contiene el programa, que es el código y que le dice al proceso
que hacer.
Cuando Ud. entra a una sesión en Unix (o Linux) empieza un proceso para Ud.
Normalmente corre un programa llamado shell, que espera a que se escriba un comando
como ls, y entonces trata de encontrar el programa correspondiente.
Cada vez que se corre un programa del prompt del shell, hay dos procesos activos, el
programa nuevo y el shell. Obviamente el shell no hace nada, mientras se corre un
programa, el shell espera a que termine para volver a poner el prompt.
Para ver qué proceso está activo en un momento determinado existe el comando ps.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 19 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

$ ps
PID TTY TIME CMD
16564 pts/1 0:00 ps
21012 pts/1 4:04 IslandWrite
34084 pts/1 0:00 -ksh

El comando ps despliega: init


• El número que identifica el proceso (PID).
• El número de terminal donde corren los
getty getty getty
procesos.
• El tiempo que ha estado ejecutándose.
• El nombre del comando o programa que ha login login login
estado ejecutándose.
Siempre que se corra ps, por lo menos
mencionará dos procesos, uno es el mismo ps, y sh
el otro es el shell (sh, bash, csh o ksh).
El comando ps tiene varias opciones, existe una
proc Proceso act ual
en particular: ps -ef. Veamos:
Lista todos los proceso que se están ejecutando
incluyendo los de otras personas conectadas a él. Se muetra el resultado de este comando
(BSD Unix).

$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Feb 21 - 3:34 /etc/init
root 4716 3124 0 Feb 21 - 0:00 /usr/bin/X11/xdm -nodaemon
root 5052 6330 0 Feb 21 - 0:21 /usr/sbin/biod 6
al334896 10004 16402 0 [Link] pts/0 0:00 -ksh
root 10296 1 0 Feb 21 - 0:00 /usr/lpp/xlC/browser/pdnsd
root 10554 1 0 Feb 21 - 0:00 /usr/sbin/getty /dev/ttypa
wmaster 21012 34084 0 [Link] pts/1 6:24 IslandWrite
al334896 21632 10004 0 [Link] pts/0 0:00 TEC
crcastro 23582 1 0Feb 21 pts/3 2:19 search g
root 24154 4716 0 [Link] - 0:00 -[Link] mx:0
al334896 25986 21 0 [Link] pts/0 0:00 [pine]
root 26358 4716 0 13:32 - 0:03 -[Link] mx:0
al370705 29166 1624 0 [Link] pts/4 0:01 mail
wmaster 32530 3408 0 [Link] pts/1 0:00 ps -ef
:

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 20 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Veamos otra salida de ps (System V) y detallaremos, a continuación, su significado :

$ ps
PID TTY STAT TIME COMMAND
2158 p4 IW 0:00 rlogin cca
29891 p4 IW 0:00 bin/csh (csh)
2116 p5 S 0:03 rlogin cca
2117 p5 S 0:03 rlogin cca
29898 p5 IW 0:00 bin/csh (csh)
29906 p6 IW 0:00 bin/csh (csh)
2263 p7 R 0:00 ps
$

Cabecera Significado
• PID Número del proceso, es un entero positivo
• TTY Es el dispositivo en donde se despliegan los resultados de los comandos.
• STAT Indica el estado del proceso, los estados más usuales son:
• IW Idle and Swapped out.
• S Sleeping.
• R Running.
• D Non interruptible I/O wait.
• T Stopped.
• Z Zombie (espera a padre).
• TIME Tiempo usado de usuario y sistema.
• COMMAND Nombre del proceso.
La información más usada por la mayoría de los usuarios es la que se refiere al PID, ya que
se usa ese número para eliminarlo del sistema o enviarle señales específicas.
Una opción más completa del comando "ps" es con los parámetros "-aux", con lo cual se
lista la tabla de procesos de todos los usuarios y además se añade una columna más que
indica el dueño de cada proceso, bajo el encabezado USER.
Veamos algunas líneas de "ps -ef", ejecutado en un SCO OpenServer 5:

$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Sep-24 ? [Link] sched
root 1 0 0 Sep-24 ? [Link] /etc/init -a
root 2 0 0 Sep-24 ? [Link] vhand
root 3 0 0 Sep-24 ? [Link] bdflush
root 4 0 0 Sep-24 ? [Link] kmdaemon
root 5 1 0 Sep-24 ? [Link] htepi_daemon /
root 6 0 0 Sep-24 ? [Link] strd
root 432 1 0 [Link] tty01 [Link] /etc/getty tty01 sc_m
root 43 1 0 [Link] ? [Link] /etc/syslogd
root 47 1 0 [Link] ? [Link] /etc/ifor_pmd
root 48 47 0 [Link] ? [Link] /etc/ifor_pmd
:

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 21 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

root 285 1 0 [Link] ? [Link] rusersd


root 256 1 0 [Link] ? [Link] /etc/cron
root 338 1 0 [Link] ? [Link] /usr/bin/X11/scologin
root 468 343 0 [Link] ttyp1 [Link] scosession
root 306 1 0 [Link] ? [Link] routed
root 370 1 0 [Link] ? [Link] lockd -u 4 -t 16
root 320 1 0 [Link] ? [Link] /etc/snmpd
root 343 338 0 [Link] ? [Link] /usr/bin/X11/scologin
root 344 340 0 [Link] tty02 [Link] vbiosd 0
root 363 1 0 [Link] ? [Link] biod 4
root 365 1 0 [Link] ? [Link] biod 4
root 366 1 0 [Link] ? [Link] biod 4
root 372 370 0 [Link] ? [Link] lockd -u 4 -t 16
root 373 372 0 [Link] ? [Link] lockd -u 4 -t 16
root 446 1 0 [Link] ? [Link] /tcb/files/no_luid/sdd
root 528 526 2 [Link] ttyp0 [Link] ksh
root 525 468 0 [Link] ? [Link] xload
root 532 468 0 [Link] ? [Link] /usr/bin/X11/pmwm
root 588 528 19 [Link] ttyp0 [Link] ps -ef
:

Comando kill
Para eliminar un proceso se usa el comando kill y especificando como parámetros el
número de proceso (PID) a ser eliminados. Por ejemplo, para eliminar un proceso:

$ kill 2116

Opcionalmente, se le puede indicar al comando kill el nivel de mortandad, o más bien


dicho, el tipo de señal que se le envía al proceso. En el caso anterior, como no se especificó
parámetro alguno, se envió la señal 15 (interrupción por software), otra forma de kill sería:

$ kill -9 2117

Esta señal (-9) es "irrevocable", la forma más efectiva de "matar" un proceso, de esta forma
la salida de ps, queda de la siguiente manera:

$ ps
PID TTY STAT TIME COMMAND
2158 p4 IW 0:00 rlogin cca
29891 p4 IW 0:00 bin/csh (csh)
29898 p5 IW 0:00 bin/csh (csh)
29906 p6 IW 0:00 bin/csh (csh)
2263 p7 R 0:00 ps
$

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 22 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

También es importante saber que los procesos están protegidos para que solamente su
dueño los pueda eliminar, si Ud. trata de eliminar un proceso de otro usuario, obtendrá un
error.

Comando time
time es una buena herramienta de programación. Da los tiempos de ejecución. Este
comando nos da tres valores cuya interpretación es:
real : Tiempo real gastado
user : Tiempo de usuario.
sys : Tiempo consumido como proceso de kernel. (Dentro de las llamadas al kernel)
Ejemplo :

$ time find / -name unix* -print

Comandos nice y renice


Existen dos números de prioridad. La prioridad NICE y la prioridad concedida por el
Kernel mediante un algoritmo.
Esta ultima no tiene porque coincidir con nice y puede valer mas de 39.
En cambio el comando nice solo acepta valores comprendidos entre 0 y 39, siendo 20 el
valor por defecto. Cuando nice sube el valor significa que el proceso tiene baja prioridad.
nice -10 incrementara el valor nice en 10. Para bajar el valor de nice hace falta permisos de
superusuario (Incrementaría la prioridad).

nice [-num] comando

renice
Sirve para cambiar la prioridad de un proceso.
Sigue la misma filosofía que el comando nice pero hay que identificar el o los procesos que
deseamos cambiar su prioridad.
Se puede cambiar la prioridad de un proceso concreto dado su PID o los procesos de un
usuario dando su UID o todos los procesos pertenecientes a un determinado grupo. dando
su GID. Uso:

renice [-n offset] [-g | -p | -u] ID

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 23 / 24
Tlf: (506) 8398-5832
CENFOTEC
Diplomado en Tecnologías de Desarrollo de Software
Curso: Sistemas Operativos
--------------------------------------------------------------------------------------------------------------------------

Ejemplos:
• Ejecutar el comando ps con la mínima prioridad.

$ nice -39 ps -l

• Ejecutar el comando ps aumentando la prioridad (bajando su valor nice) en 10. Esto solo
lo puede hacer 'root'.

# nice --10 ps -l

• Bajar la prioridad de el proceso 33432

$ renice -p 33432

Explicación:
En los sistemas Unix (y Linux) el multiproceso esta implementado concediendo cíclicamente
la CPU en rodajas de tiempo a cada proceso que esta en ejecución.
Para ello para cada proceso en ejecución existe un contador que se va decrementando en
cada intento de acceder a la CPU y solo accederá cuando el contador alcance el valor 0. En
ese momento se ejecuta el proceso y el contador se inicializa de nuevo con el valor NICE.
Por eso si un proceso tiene un valor NICE bajo, se ejecutara mas veces que uno que tenga
un valor NICE alto pero en cualquier caso esta garantizado que todos se ejecutan. Si un
proceso tiene valor NICE 0. Se ejecutara todas las veces en cada ciclo.

Juan Matías Matías (jUaNIX)


jmatias@[Link] Pág: 24 / 24
Tlf: (506) 8398-5832

También podría gustarte