Conceptos basicos FreeBSD

Aparte del método tradicional de instalar software en UNIX® (descargar fuentes, descomprimir, editar el fuente y compilar), FreeBSD ofrece dos alternativas para instalar programas: packages y dos alternativas para instalar programas: package y ports. Una lista y ports. Hay una lista completa de los ports disponibles aquí.

PACKAGES
Los “packages” son programas precompilados, equivalentes en FreeBSD a los ficheros .deb en sistemas Debian/Ubuntu y .rpm en sistemas Red Hat/Fedora. Los packages se instalan usando pkg_add(1). Por ejemplo, puede instalar Apache 2.2 del siguiente modo:

# pkg_add /tmp/apache-2.2.6_2.tbz

Al usar la opción -rpkg_add(1) automáticamente descargará el package indicado y lo instalará, así como todos aquellos que necesite para su funcionamiento. Esto son las dependencias.

# pkg_add -r apache22
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
[snip]

To run apache www server from startup, add apache22_enable="YES"
in your /etc/rc.conf. Extra options can be found in startup script.

Nota: Si usa una versión release de FreeBSD (6.2, 6.3, 7.0, etc., lo que seguramente es una instalación desde CD-ROM) pkg_add -r descargará packages compilados para esa release específica. Estos packages pueden ser versiones desactualizadas del programa. Puede usar la variable PACKAGESITE para ignorar este comportamiento, que es el que se espera por omisión del programa. Por ejemplo, asigne a PACKAGESITE el valor ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/ si quiere descargar los packages más recientes compilados para la versión 6.X.

Si quiere saber más sobre las versiones de FreeBSD consulte el artículo Cómo elegir la versión apropriada de FreeBSD.

Para más información sobre los packages consulte la sección 4.4 del Handbook: Uso del sistema de packages.

PORTS
El segundo método que ofrece FreeBSD para instalar programas es usar la Colección de Ports. la Colección de Ports es un entorno de ficheros Makefile y parches adaptados específicamente para poder instalar desde el código fuente aplicaciones de lo más variopinto en sistemas FreeBSD. Si instala un port el sistema descargará los fuentes, aplicará los parches necesarios, compilará el código e instalará el programa (y hará exactamente los mismo con todas las dependencias).

La Colección de Ports, también conocida como árbol de ports, está en /usr/ports si se instaló durante el proceso de instalación de FreeBSD. Si la Colección de Ports no está instalada puede hacerlo puede hacerlo desde los discos de instalación mediante sysinstall(8) o desde los servidores de FreeBSD gracias a csup(1)portsnap(8). Tiene instrucciones detalladas para instalar la Colección de Ports en la sección 4.5.1 del Handbook.

Instalar un port es (generalmente) tan simple como entrar en el directorio del port y ejecutar el proceso de compilación. El ejemplo que se muestra a continuación instala Apache 2.2 desde la Colección de Ports:

# cd /usr/ports/www/apache22
# make install clean

Una de las principales ventajas del uso de ports para instalar software es la posibilidad de ajustar las opciones de la instalación. Por ejemplo, es posible activar mod_ldap dentro de su Apache 2.2 durante la instalación mediante el uso de la variable WITH_LDAP de make(1):

# cd /usr/ports/www/apache22
# make WITH_LDAP="YES" install clean

Para más información sobre la Colección de Ports consulte la sección del Handbook dedicada a la Colección de Ports.

WHICH

Los packages son simplemente ports precompilados, así que es cuestión de elegir entre instalar desde los fuentes (ports) o instalar binarios directamente (packages). Cualquiera de los dos tiene sus propias ventajas:

Package (binario)

  • Instalación más rápida (compilar programas grandes puede llevar su tiempo).
  • No hay que comprender el proceso de compilar software.
  • No es necesario instalar compiladores en su sistema.

Ports (fuente)

  • Es posible ajustar las opciones de la instalación. (Los packages se generan normalmente con las opciones estándar. Con los ports puede ajustar diversas opciones, como disponer de módulos adicionales o cambiar la ruta por omisión.)
  • Puede usar sus propios parches si tiende hacerlo.

Si no tiene requisitos especiales los packages probablemente cubran sus necesidades sin problema. Si alguna vez necesita algo más ajustado puede recurrir a los ports. Tenga en cuenta que si necesita un programa a su medida pero sigue prefiriendo usar packages puede hacerse uno su gusto mediante make patch y luego copie el package a otras máquinas.

Lista de comandos

adduser Crea un nuevo usuario
cal Muestra calendario
cat Muestra el contorno de un archivo
cd Muda de directorio
chgrp Altera o grupo de un archivo o directorio
chmod Altera los permisos de un archivo o directorio
chown Altera el propietario de un archivo o directorio
cmp Compara dos archivos e informa las diferencias
cp Copia un archivo
cpio Utilitario de backup
cut Copia una columna especifica de un archivo
date Muestra a data e a hora do sistema
dd Copia discos
df Muestra informaciones sobre las particiones montadas no-sistema
du Informa o uso (en bytes) do disco/sistema
dump Utilitario de backup
ee Editor de textos
fdisk Editor de particiones
fdformat Formato de un disco
find Procura por nombre, un archivo o directorio
fsck Procura/Corrige errores en un sistema de archivos
gdb Debug
grep Procura por un string o palabra
hostname Muestra o nombra dos sistema
kill Termina/Retarda un proceso
ln Crea link entre u archivo y otro
lpq Informa el status dos jobs enviados para impresi?n
lpr Env?a un archivo para ser impreso
lprm Remueve un archivo de fila de impresi?n
ls Lista archivos de directorios
mail Env?a o recibe un e-mail
man Muestra o manual online de un comando
mkdir Crea un directorio
more Faz una pausa entre a exhibici?n de una tela en otra
mount Monta el contenido de una partici?n en un directorio
mv Mueve/Renombra un archivo
newfs Realiza el formato de un disco
nohup Informa al sistema para no interrumpir la ejecuci?n del comando apos su logout
passwd Altera su password no-sistema
pkg_add Instala una aplicaci?n de packages (pkg_add)
pkg_delete Remueve una aplicaci?n (pkg_delete)
ps Muestra informaciones sobre el status de dos procesos en ejecuci?n
pwd Muestra el directorio actual
rm Remueve un archivo
rmdir Remueve un directorio
rmuser Remueve un usuario
split Divide un archivo
su Asume el Login de otro usuario
tar Utilitario de Backup
vi Editor de textos
who Muestra los usuarios ligados no-sistema

oducción

El siguiente capítulo comprende la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Gran parte de este material es relevante para cualquier sistema operativo tipo UNIX®. Puede saltarse este capítulo si considera que ya conoce el funcionamiento de UNIX. Si no tiene experiencia previa con FreeBSD debería leer este capítulo con mucha atención.

Después de leer este capítulo, usted sabrá:

· Cómo usar las “consolas virtuales” de FreeBSD.

· Cómo funcionan los permisos de fichero UNIX en relación con las banderas de fichero en FreeBSD.

· La disposición de sistemas de ficheros por defecto en FreeBSD.

· La organización de disco de FreeBSD.

· Cómo montar y desmontar sistemas de ficheros.

· Qué son los procesos, dæmons y señales.

· Qué es una shell, cómo modificar sus variables de ambiente de login por defecto.

· Cómo utilizar editores de texto básicos.

· Qué son los dispositivos y nodos de dispositivos.

· Qué formato binario se usa en FreeBSD.

· Cómo buscar información en las páginas de manual.

FreeBSD puede utilizarse de muchas maneras. Una de ellas es tecleando órdenes en una terminal de texto. De este modo, mucha de la flexibilidad y poder de un sistema operativo UNIX® está inmediatamente en sus manos cuando usa FreeBSD. Esta sección describe qué son “terminales” y “consolas”, y cómo puede usarlas en FreeBSD.

Si no ha configurado FreeBSD para iniciar automáticamente un entorno gráfico en el arranque, el sistema le presentará un “prompt” de entrada después del arranque, inmediatamente después de que los “scripts” de inicio terminen de ejecutarse. Verá algo similar a esto:

Additional ABI support:.

Local package initialization:.

Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

login:

Los mensajes pueden ser un poco diferentes en su sistema, pero verá algo similar. Las últimas dos líneas son las que nos interesan por el momento. La penúltima línea dice:

FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

Esta línea contiene información acerca del sistema que acaba de arrancar. Esta usted ante una consola “FreeBSD” que se ejecuta en un procesador Intel o compatible de la arquitectura x86[1]. El nombre de esta máquina (cada máquina UNIX tiene un nombre) espc3.ejemplo.org, y usted está ahora ante su consola de sistema (la terminal ttyv0).

Finalmente, la última línea siempre es:

login:

sta es la parte donde se supone que usted teclée su “nombre de usuario” para entrar en FreeBSD. La siguiente sección describe cómo hacerlo.

FreeBSD es un sistema multiusuario multiprocesador. Esta es la descripción formal que se suele dar a un sistema que puede ser utilizado por muchas personas diferentes, que simultáneamente ejecutan muchos programas en un sola máquina.

Cada sistema multiusuario necesita algún modo de distinguir a un “usuario” del resto. En FreeBSD (y en todos los sistemas operativos tipo UNIX) esto se logra requiriendo que cada usuario debe “acceder” al sistema antes de poder ejecutar programas. Cada usuario tiene un nombre único (el “nombre de usuario”) y una clave secreta, personal (la “contraseña”). FreeBSD preguntará por ambos antes de permitirle a un usuario ejecutar cualquier programa.

Justo después de que FreeBSD arranque y termine de ejecutar sus “scripts” de inicio [2], le presentará un “prompt” y solicitará un nombre válido de usuario:

login:

 

En este ejemplo vamos a asumir que su nombre de usuario es john. Teclée john en el “prompt” y pulse Enter. Debería presentársele un “prompt” donde introducir una “contraseña”:
login: john
Password:
Teclée ahora la contraseña de john y pulse Enter. La contraseña no se muestra en pantalla, pero no debe preocuparse por ello. Esto se hace así por motivos de seguridad.
Si ha tecleado su contraseña correctamente ya está usted en un sistema FreeBSD, listo para probar todas las órdenes disponibles.
Verá el MOTD (mensaje del día) seguido por un “prompt” (un caracter #, $ o %). Esto confirma que ha validado con éxito su usuario en FreeBSD.
2.3. Consolas múltiples
Ejecutar órdenes UNIX en una consola está bien, pero FreeBSD puede ejecutar muchos programas a la vez. Tener una consola donde se pueden teclear órdenes puede ser un poco de desperdicio cuando un sistema operativo como FreeBSD puede ejecutar docenas de programas al mismo tiempo. Aquí es donde las “consolas virtuales” pueden ser de mucha ayuda.
FreeBSD puede ser configurado para presentarle diferentes consolas virtuales. Puede cambiar de una de ellas a cualquier otra consola virtual pulsando un par de teclas en su teclado. Cada consola tiene su propio canal de salida, y FreeBSD se ocupa de redireccionar correctamente la entrada del teclado y la salida al monitor cuando cambia de una consola virtual a la siguiente.
Se han reservado ciertas combinaciones especiales de teclas para pasar de unas consolas virtuales a otras en FreeBSD [3]. Puede utilizar Alt-F1, Alt-F2 y así sucesivamente hasta Alt-F8 para cambiar a una consola virtual diferente en FreeBSD.
Mientras está cambiando de una consola a la siguiente, FreeBSD se ocupa de guardar y restaurar la salida de pantalla. El resultado es la “ilusión” de tener varias pantallas y teclados “virtuales” que puede utilizar para teclear órdenes para que los ejecute FreeBSD. El programa que usted lanza en una consola virtual no deja de ejecutarse cuando la consola no está visible. Continúan ejecutándose cuando se cambia a una consola virtual diferente.
2.4. El fichero /etc/ttys
La configuración por defecto de FreeBSD iniciará con ocho consolas virtuales. Esta no es una configuración estática por hardware y usted puede personalizar fácilmente su sistema para arrancar con más o menos consolas virtuales. El número y propiedades de las consolas virtuales están detallados en /etc/ttys.
Use /etc/ttys para configurar las consolas virtuales de FreeBSD. Cada línea no comentada de este fichero (líneas que no comienzan con un caracter #) contiene propiedades para una sola terminal o consola virtual. La versión por defecto de este fichero en FreeBSD configura nueve consolas virtuales y habilita ocho de ellas. Son las líneas que comienzan con ttyv:
# name getty type status comments
#
ttyv0 «/usr/libexec/getty Pc» cons25 on secure
# Virtual terminals
ttyv1 «/usr/libexec/getty Pc» cons25 on secure
ttyv2 «/usr/libexec/getty Pc» cons25 on secure
ttyv3 «/usr/libexec/getty Pc» cons25 on secure
ttyv4 «/usr/libexec/getty Pc» cons25 on secure
ttyv5 «/usr/libexec/getty Pc» cons25 on secure
ttyv6 «/usr/libexec/getty Pc» cons25 on secure
ttyv7 «/usr/libexec/getty Pc» cons25 on secure
ttyv8 «/usr/X11R6/bin/xdm -nodaemon» xterm off secure
Consulte ttys(5) si quiere una descripción detallada de cada columna en este fichero y todas las opciones que puede usar para configurar las consolas virtuales.
2.5. Consola en modo monousuario
En la Sección 14.6.2 encontrará una descripción detallada de lo que es “modo monousuario” No importa que solo exista una consola cuando ejecuta FreeBSD en modo monousuario. No existen consolas virtuales disponibles. Las configuraciones de la consola en modo monousuario se pueden encontrar también en /etc/ttys. Busque la línea que comienza con console:
# name getty type status comments
#
# Si la consola está marcada como «insecure», entonces init
# le pedirá la contraseña de root al entrar a modo monousuario.
console none unknown off secure
Nota: Tal y como indican los comentarios por encima de la línea console, puede editar esta línea y cambiar secure por insecure. Si lo hace, cuando FreeBSD arranque en modo monousuario el sistema le pedirá la contraseña de root.
Tenga cuidado si cambia esto a insecure. Si olvida la contraseña de root arrancar en modo monousuario será con seguridad más complicado. Sigue siendo posible, pero será un poco difícil para alguien que no esté familiarizado con le proceso de arranque de FreeBSD y los programas involucrados en dicho proceso.

En este ejemplo vamos a asumir que su nombre de usuario es john. Teclée john en el “prompt” y pulse Enter. Debería presentársele un “prompt” donde introducir una “contraseña”:login: johnPassword:Teclée ahora la contraseña de john y pulse Enter.

La contraseña no se muestra en pantalla, pero no debe preocuparse por ello. Esto se hace así por motivos de seguridad.Si ha tecleado su contraseña correctamente ya está usted en un sistema FreeBSD, listo para probar todas las órdenes disponibles.Verá el MOTD (mensaje del día) seguido por un “prompt” (un caracter #, $ o %).

Esto confirma que ha validado con éxito su usuario en FreeBSD.2.3. Consolas múltiplesEjecutar órdenes UNIX en una consola está bien, pero FreeBSD puede ejecutar muchos programas a la vez. Tener una consola donde se pueden teclear órdenes puede ser un poco de desperdicio cuando un sistema operativo como FreeBSD puede ejecutar docenas de programas al mismo tiempo.

Aquí es donde las “consolas virtuales” pueden ser de mucha ayuda.FreeBSD puede ser configurado para presentarle diferentes consolas virtuales. Puede cambiar de una de ellas a cualquier otra consola virtual pulsando un par de teclas en su teclado. Cada consola tiene su propio canal de salida, y FreeBSD se ocupa de redireccionar correctamente la entrada del teclado y la salida al monitor cuando cambia de una consola virtual a la siguiente.Se han reservado ciertas combinaciones especiales de teclas para pasar de unas consolas virtuales a otras en FreeBSD [3]. Puede utilizar Alt-F1, Alt-F2 y así sucesivamente hasta Alt-F8 para cambiar a una consola virtual diferente en FreeBSD.Mientras está cambiando de una consola a la siguiente, FreeBSD se ocupa de guardar y restaurar la salida de pantalla. El resultado es la “ilusión” de tener varias pantallas y teclados “virtuales” que puede utilizar para teclear órdenes para que los ejecute FreeBSD.

El programa que usted lanza en una consola virtual no deja de ejecutarse cuando la consola no está visible. Continúan ejecutándose cuando se cambia a una consola virtual diferente.

2.4. El fichero /etc/ttysLa

configuración por defecto de FreeBSD iniciará con ocho consolas virtuales.

Esta no es una configuración estática por hardware y usted puede personalizar fácilmente su sistema para arrancar con más o menos consolas virtuales. El número y propiedades de las consolas virtuales están detallados en /etc/ttys.

Use /etc/ttys para configurar las consolas virtuales de FreeBSD.

Cada línea no comentada de este fichero (líneas que no comienzan con un caracter #) contiene propiedades para una sola terminal o consola virtual. La versión por defecto de este fichero en FreeBSD configura nueve consolas virtuales y habilita ocho de ellas.

Son las líneas que comienzan con ttyv:

 

# name getty type status comments

#

ttyv0 «/usr/libexec/getty Pc» cons25 on secure

# Virtual terminals

ttyv1 «/usr/libexec/getty Pc» cons25 on secure

ttyv2 «/usr/libexec/getty Pc» cons25 on secure

ttyv3 «/usr/libexec/getty Pc» cons25 on secure

ttyv4 «/usr/libexec/getty Pc» cons25 on secure

ttyv5 «/usr/libexec/getty Pc» cons25 on secure

ttyv6 «/usr/libexec/getty Pc» cons25 on secure

ttyv7 «/usr/libexec/getty Pc» cons25 on secure

ttyv8 «/usr/X11R6/bin/xdm -nodaemon» xterm off secure

si quiere una descripción detallada de cada columna en este fichero y todas las opciones que puede usar para configurar las consolas virtuales

.2.5. Consola en modo monousuario

En la Sección 14.6.2 encontrará una descripción detallada de lo que es “modo monousuario” No importa que solo exista una consola cuando ejecuta FreeBSD en modo monousuario. No existen consolas virtuales disponibles.

Las configuraciones de la consola en modo monousuario se pueden encontrar también en /etc/ttys. Busque la línea que comienza con console:

 

# name getty type status comments

#

# Si la consola está marcada como «insecure», entonces init

# le pedirá la contraseña de root al entrar a modo monousuario.

.console none unknown off secureNota: Tal y como indican los comentarios por encima de la línea console, puede editar esta línea y cambiar secure por insecure. Si lo hace, cuando FreeBSD arranque en modo monousuario el sistema le pedirá la contraseña de root.Tenga cuidado si cambia esto a insecure. Si olvida la contraseña de root arrancar en modo monousuario será con seguridad más complicado. Sigue siendo posible, pero será un poco difícil para alguien que no esté familiarizado con le proceso de arranque de FreeBSD y los programas involucrados en dicho proceso.

 

Notas

[1]

Esto es lo que i386 significa. Tenga en cuenta que incluso si no está ejecutando FreeBSD en una CPU Intel 386, éste va a ser i386. No es el tipo de su procesador, sino la “arquitectura” la que se muestra aquí.

[2]

Los “scripts” de inicio son programas que FreeBSD ejecuta automáticamente cuando arranca. Su función principal es preparar las cosas para que todo lo demás se ejecute, e iniciar cualquier servicio que tenga configurado para ejecutarse en segundo plano haciendo cosas útiles.

[3]

Tiene una descripción bastante técnica y correcta de todos los detalles de la consola FreeBSD y los controladores de teclado pueden encontrarse en las páginas de manual de syscons(4)atkbd(4)vidcontrol(1)kbdcontrol(1). No nos extenderemos en los detalles aquí, pero el lector interesado siempre puede consultar dichas páginas de manual si quiere una explicación más detallada y profunda de cómo funcionan estas cosas.




FreeBSD, cuya raíz histórica es el UNIX BSD, se fundamenta en varios conceptos clave de UNIX. El primero y más importante es que FreeBSD es un sistema operativo multi-usuario. El sistema puede gestionar varios usuarios trabajando simultáneamente y en tareas que no guardan relación entre sí. El sistema se encarga de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo de Unidad Central de Proceso (CPU) de manera equitativa para cada usuario.
Debido a que el sistema es capaz de soportar múltiples usuarios, todo lo que el sistema administra tiene un conjunto de permisos que usa para decidir quién puede leer, escribir y ejecutar un recurso. Estos permisos se guardan como octetos divididos en tres partes: una para el propietario del fichero, otra para el grupo al que el fichero pertenece, y otra para todos los demás grupos y usuarios. Veamos una representación numérica de esto:

Valor

Permiso

Listado de directorio

0

No leer, no escribir, no ejecutar

---

1

No leer, no escribir, ejecutar

--x

2

No leer, escribir, no ejecutar

-w-

3

No leer, escribir, ejecutar

-wx

4

Leer, no escribir, no ejecutar

r--

5

Leer, no escribir, ejecutar

r-x

6

Leer, escribir, no ejecutar

rw-

7

Leer, escribir, ejecutar

rwx

Puede utilizar el parámetro de línea de órdenes -l de ls(1) para ver un listado largo que incluya una columna con información acerca de los permisos de fichero para el propietario, grupo y los demás. Por ejemplo, un ls -l en un directorio arbitrario puede mostrar algo como esto:

 

% ls -l

total 530

-rw-r–r– 1 root wheel 512 Sep 5 12:31 mifichero

-rw-r–r– 1 root wheel 512 Sep 5 12:31 otrofichero

-rw-r–r– 1 root wheel 7680 Sep 5 12:31 email.txt

Aquí está como se divide la primera columna de ls -l:

-rw-r–r–

un socket o cualquier otro dispositivo especial pseudo-ficheroa . En este caso, el - un fichero regular. Los siguientes tres caracteres, rw- en este ejemplo, dan los permisos para el propietario del fichero. Los siguientes tres caracteres, r--, dan los permisos para el grupo al que el fichero pertenece. Los últimos tres caracteres, r--, dan los permisos para el resto del mundo. Un guión indica que el permiso está desactivado. En el caso de este fichero, los permisos están asignados de tal manera que el propietario puede leer y escribir en el fichero, el grupo puede leer el fichero, y el resto del mundo sólo puede leer el fichero. De acuerdo con la tabla de arriba, los permisos para este fichero serían 644, donde cada dígito representa las tres partes de los permisos del fichero.

Todo ésto está muy bien, pero ¿cómo controla el sistema los permisos de los dispositivos? FreeBSD en realidad trata la mayoría de los dispositivos hardware como un fichero que los programas pueden abrir, leer y en los que pueden escribir datos como si de cualquier otro fichero se tratara. Estos ficheros especiales de dispositivo se encuentran en el directorio /dev.


Los directorios también son tratados como ficheros. Tienen permisos de lectura, escritura y ejecución. El bit de ejecución en un directorio tiene un significado ligeramente distinto que para los ficheros. Cuando un directorio está marcado como ejecutable significa que se puede mirar dentro, se puede hacer un “cd” (cambiar directorio) a él. Esto también significa que dentro del directorio es posible acceder a ficheros cuyos nombres son conocidos (sujeto, claro está, a los permisos de los ficheros mismos).

En particular, para poder realizar un listado de directorio, el permiso de lectura debe ser activado en el directorio, mientras que para borrar un fichero del que se conoce el nombre es necesario tener permisos de escritura y ejecución en el directorio que contiene el fichero.

Existen más permisos, pero se usan principalmente en circunstancias especiales como los binarios ejecutables de tipo setuid y los los directorios de tipo “sticky”. Si desea más información acerca de los permisos de ficheros y cómo establecerlos, consultechmod(1).



Escrito por Tom Rhodes.

Los permisos simbólicos, también conocidos como expresiones simbólicas, utilizan caracteres en lugar de valores octales para asignar permisos a ficheros o directorios. Las expresiones simbólicas utilizan la sintaxis de (quién) (acción) (permisos) mediante los siguientes valores:

Opción

Letra

Representa

(quién)

u

Usuario

(quién)

g

Grupo propietario

(quién)

o

Otro

(quién)

a

Todos (“todo el mundo”)

(acción)

+

Añadir permisos

(acción)

Quitar permisos

(acción)

=

Activar permisos explicitamente

(permisos)

r

Lectura

(permisos)

w

Escritura

(permisos)

x

Ejecución

(permisos)

t

Bit Sticky (“pegajoso”)

(permisos)

s

Activar UID o GID

 

Estos valores se aplican con chmod(1) de la misma manera que los anteriores, pero con letras. Por ejemplo, podría usar la siguiente orden para bloquear a otros usuarios el acceso a FICHERO:


%

chmod go= FICHERO

Puede usarse una lista separada por comas cuando se quiera aplicar más de un conjunto de cambios a un fichero. Por ejemplo la siguiente orden eliminará los permisos de escritura de grupo y “mundo” a FICHERO, y añade permisos de ejecución para todos:


%

chmod go-w,a+x FILE



Escrito por Tom Rhodes.


Además de los permisos de fichero previamente expuestos, FreeBSD permite el uso de “banderas de fichero”. Estas banderas añaden un nivel de seguridad y control adicional sobre ficheros, pero no sobre directorios.


Estas banderas de fichero añaden un nivel adicional de control sobre ficheros, ayudando a asegurar que en algunos casos ni siquiera root pueda eliminar o alterar ficheros.

Las banderas de fichero se modifican mediante chflags(1), gracias a una interfaz muy sencilla. Por ejemplo, para habilitar la bandera imborrable de sistema en fichero1, escriba lo siguiente:


#

chflags sunlink fichero1

Y para dehabilitar la bandera imborrable de sistema, simplemente escriba la orden previa con “no” antes de sunlink. Observe:


#

chflags nosunlink fichero1

Para ver las banderas de este fichero, utilice ls(1) con las opciones -lo:


# ls -lo fichero1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

La salida debería ser como esta:


-rw-r–r– 1 trhodes trhodes sunlnk 0 Mar 1 05:54 fichero1


Varias banderas solo pueden ser añadidas o retiradas de ficheros por el usuario root. En otros casos, el propietario del fichero puede activar estas banderas. Se recomienda que para más información la persona encargada de la administración del sistema consulte las páginas de manual chflags(1)chflags(2).


La jerarquía del sistema de ficheros de FreeBSD es fundamental para obtener una compresión completa del sistema. El concepto más importante a entender es el del directorio raíz, “/”. Este directorio es el primero en ser montado en el arranque y contiene el sistema básico necesario para preparar el sistema operativo para su funcionamiento en modo multiusuario. El directorio raíz también contiene puntos de montaje para cualquier otro sistema de ficheros que se pretenda montar.


Un punto de montaje es un directorio donde se pueden insertar sistemas de ficheros al sistema de archivos raíz. Esto se explica con detalle en la Sección 3.5. Los puntos de montaje estándar incluyen /usr/var/tmp/mnt/cdrom. Estos directorios suelen corresponderse con entradas en /etc/fstab/etc/fstab es una tabla que sirve de referencia al sistema y contiene los diferentes sistemas de ficheros y sus respectivos puntos de montaje. La mayoría de los sistemas de ficheros en /etc/fstab se montan automáticamente en el arranque gracias al “script” rc(8), a menos que contengan la opción noauto. Si quiere más información consulte la Sección 3.6.1.


Veremos ahora una descripción de los directorios más comunes. Si desea información más completa consulte hier(7).

 

Directorio

Descripción

/

Directorio raíz del sistema de ficheros.

/bin/

Utilidades de usuario fundamentales tanto para el ambiente monousuario como para el multiusuario.

/boot/

Programas y ficheros de configuración utilizados durante el arranque del sistema operativo.

/boot/defaults/

Ficheros de configuración por defecto del arranque; ver loader.conf(5).

/dev/

Nodos de dispositivo; ver intro(4).

/etc/

Ficheros de configuración y “scripts” del sistema.

/etc/defaults/

Ficheros de configuración por defecto del sistema; ver rc(8).

/etc/mail/

Ficheros de configuración para agentes de transporte de correo como sendmail(8).

/etc/namedb/

Ficheros de configuración de named; ver named(8).

/etc/periodic/

“Scripts” que se ejecutan diariamente, semanalmente y mensualmente mediante cron(8); ver periodic(8).

/etc/ppp/

Ficheros de configuración de ppp; ver ppp(8).

/mnt/

Directorio vacío utilizado de forma habitual por administradores de sistemas como punto de montaje temporal.

/proc/

Sistema de ficheros de procesos; ver procfs(5)mount_procfs(8).

/rescue/

Programas enlazados estáticamente para restauraciones de emergencia; ver rescue(8).

/root/

Directorio local para la cuenta root.

/sbin/

Programas del sistema y utilidades fundamentales de administración para ambientes monousuario y multiusuario.

/stand/

Programas utilizados en un ambiente autocontenido (standalone).

/tmp/

Ficheros temporales. El contenido de /tmp NO suelen conservarse después de un reinicio del sistema. Los sistemas de ficheros basados en memoria suelen montarse en /tmp. Puede automatizarse mediante variables de tmpmfs en rc.conf(5) (o con una entrada en /etc/fstab; ver mdmfs(8), o para FreeBSD 4.X,mfs(8)).

/usr/

La mayoría de utilidades y aplicaciones de usuario.

/usr/bin/

Aplicaciones comunes, herramientas de programación y otras aplicaciones.

/usr/include/

Ficheros “include” estándar de C.

/usr/lib/

Bibliotecas.

/usr/libdata/

Ficheros de datos con diversas funciones.

/usr/libexec/

Dæmons del sistema y utilidades del sistema (ejecutados por otros programas).

/usr/local/

Ejecutables locales, bibliotecas, etc. también se usa como destino por defecto de la infraestructura de ports de FreeBSD. Dentro de /usr/local debe seguirse el esquema general definido por hier(7) para /usr. Las excepciones son el directorio man, el cual está directamente bajo /usr/local en lugar de debajo de/usr/local/share, y la documentación de los ports está en share/doc/port.

/usr/obj/

Arbol destino dependiente de arquitectura fruto de la compilación del árbol /usr/src.

/usr/ports

La colección de Ports de FreeBSD (opcional).

/usr/sbin/

Dæmons del sistema y utilidades del sistema (ejecutados por usuarios del sistema).

/usr/share/

Ficheros independientes de arquitectura.

/usr/src/

Ficheros fuente BSD y/o local.

/usr/X11R6/

Ejecutables de la distribución X11R6, bibliotecas, etc (opcional).

/var/

Ficheros multipropósito de log, temporales, en tránsito y de “spool”. En ocasiones se monta en /var un sistema de ficheros basado en memoria. Puede automatizarse el proceso mediante variables de varmfs enrc.conf(5) (o con una entrada en /etc/fstab; ver mdmfs(8), o para FreeBSD 4.X, mfs(8)).

/var/log/

Diversos ficheros de log del sistema.

/var/mail/

Ficheros de buzones de correo de usuarios.

/var/spool/

Directorios diversos del sistema de spool de impresora y correo

/var/tmp/

Ficheros temporales. Estos ficheros suelen conservarse tras un reinicio del sistema, a menos que /var sea un sistema de ficheros basado en memoria.

/var/yp

Mapas NIS.


 


La unidad más pequeña que FreeBSD utiliza para ubicar ficheros es el nombre de fichero. Los nombres de fichero son sensibles a las mayúsculas, lo que significa que readme.txtREADME.TXT son dos ficheros distintos. FreeBSD no utiliza la extensión (.txt) de un fichero para determinar si el es un programa, o un documento o alguna otra forma de datos.


Los ficheros se almacenan en directorios. Un directorio puede estar vacío, o puede contener cientos de ficheros. Un directorio también puede contener otros directorios, permitiéndole contruir una jerarquía de directorios dentro de otro. Esto hace mucho más fácil la organización de sus datos.


Para referirse a ficheros o directorios se usa el nombre de archivo o de directorio, seguido por una barra, /, seguido por cualquier otro nombre de directorio que sea necesario. Si tiene un directorio tal, el cual contiene el directorio cual, el cual contiene el fichero readme.txt, entonces el nombre completo o ruta al fichero es tal/cual/readme.txt.

Los directorios y ficheros se almacenan en un sistema de ficheros. Cada sistema de ficheros contiene un sólo directorio en el nivel más elevado, que es el directorio raíz de ese sistema de ficheros. Este directorio raíz puede contener otros directorios.


Lo visto hasta ahora probablemente sea similar a cualquier otro sistema operativo que pueda haber utilizado, pero hay unas cuantas diferencias; por ejemplo, MS-DOS® utiliza  para separar nombres de fichero y directorio, mientras que Mac OS® usa :.

FreeBSD no utiliza letras de unidades, u otro nombre de unidad en la ruta. Por tanto, no podrá escribirc:/tal/cual/readme.txt en FreeBSD.

En FreeBSD, en cambio, un sistema de ficheros recibe el nombre de sistema de ficheros raíz. El directorio raíz del sistema de ficheros raíz se representa como /. Cualquier otro sistema de ficheros, por tanto, se monta bajo el sistema de ficheros raíz. No importa cuántos discos tenga en su sistema FreeBSD, cada directorio parecerá ser parte del mismo disco.


Suponga que tiene tres sistemas de ficheros, denominados ABC. Cada sistema de ficheros tiene un directorio raíz, el cual contiene otros dos directorios, llamados A1A2B1B2C1C2). (y de la misma manera

Usaremos A como sistema de ficheros raíz. Si usara ls para ver el contenido de este directorio vería dos subdirectorios, A1A2. El árbol de directorios sería como este:

Un sistema de ficheros debe montarse en un directorio de otro sistema de ficheros. Ahora suponga que monta el sistema de ficheros B en el directorio A1. El directorio raíz de B reemplaza a A1, y los directorios en B aparecen de esta manera:


Cualquier fichero que esté en el directorio B1B2 puede encontrarse con la ruta /A1/B1/A1/B2 según sea necesario. Cualquier fichero que esté en /A1 ha desaparecido temporalmente. Aparecerán de nuevo si B se desmonta de A.


Si B se monta en A2 entonces el diagrama se vería así:

y las rutas serían /A2/B1/A2/B2 respectivamente.

Pueden montarse sistemas de ficheros uno sobre otro. Continuando el ejemplo anterior, el sistema de ficheros C podría montarse en el directorio B1 en el sistema de ficheros B, lo que nos llevaría a esto:

C podría montarse directamente en el sistema de ficheros A, bajo el directorio A1:

Si está familiarizado con MS-DOS esto es similar, aunque no idéntico, a utilizar join.

Esto no es algo de lo que necesite preocuparse de forma habitual. Normalmente creará sistemas de ficheros al instalar FreeBSD y decidirá dónde montarlos; lo más habitual es que no los cambie de sitio a menos que agregue un disco nuevo.

Es perfectamente posible tener un sistema de ficheros raíz extenso y no necesitar crear otros. Este esquema tiene unos cuantos inconvenientes y una ventaja:

Ventajas de disponer de múltiples sistemas de ficheros


· Si dispone de varios sistemas de ficheros puede optar por usar distintas opciones de montaje. Por ejemplo, gracias a una planificación cuidadosa, el sistema de ficheros raíz puede montarse como sólo-lectura, haciendo imposible borrar sin querer o editar un fichero crítico. Al mantener separados sistemas de ficheros en los que los usuarios pueden escribir, como /home, de otros sistemas de ficheros también le permite montar con la opción nosuid; dicha opción previene que los bits suid/guid en los ejecutables almacenados en el sistema de ficheros tengan efecto, mejorando en cierto modo la seguridad.


· FreeBSD optimiza automáticamente el esquema de ficheros en un sistema de ficheros, dependiendo de cómo el sistema de ficheros esté siendo utilizado. Un sistema de archivos que contiene muchos ficheros pequeños en los que se escribe frecuentemente tendrá una optimización de uno que contenga menos ficheros y más grandes. Si sólo tiene un gran sistema de ficheros esta optimización no tiene opción de actuar.


· Los sistemas de ficheros de FreeBSD son muy robustos en caso de sufrir un fallo de electricidad. De todas maneras, un fallo eléctrico en un momento crítico puede dañar la estructura del sistema de ficheros. Si reparte sus datos en múltiples sistemas de ficheros hará que sea más probable que el sistema arranque después de uno de esos fallos, haciéndole además más fácil la tarea de restaurarlo desde un respaldo si fuera necesario.


Ventajas de un sólo sistema de ficheros


· Los sistemas de ficheros son de un tamaño fijo. Si crea un sistema de ficheros cuando instala FreeBSD y le da un tamaño específico, tal vez descubra más tarde que necesita hacer la partición más grande. Esto no es fácil de realizar sin hacer una copia de seguridad, crear de nuevo el sistema de ficheros con el nuevo tamaño y entonces restaurar los datos respaldados.


Importante: FreeBSD 4.4 y sus versiones posteriores disponen de growfs(8), que hace posible incrementar el tamaño del sistema de ficheros “al vuelo”, eliminando esta limitación.


Los sistemas de ficheros están alojados en particiones. Este es un detalle muy importante, puesto que el término partición no significa aquí lo mismo que en otros entornos (por ejemplo, partición MS-DOS), debido a la herencia UNIX® de FreeBSD. Cada partición se identifica con una letra desde a hasta h. Cada partición puede contener solamente un sistema de ficheros, lo que significa que los sistemas de ficheros suelen definirse mediante su punto de montaje en la jerarquía del sistema de ficheros o por la letra de la partición en la que están alojados.


FreeBSD también utiliza espacio de disco como espacio de intercambio (swap). El espacio de intercambio le brinda a FreeBSDmemoria virtual. Esto le permite a su sistema comportarse como si tuviera más memoria de la que realmente tiene. Cuando a FreeBSD se le agota la memoria mueve algunos de los datos que no están siendo utilizandos en ese momento al espacio de intercambio, y los mueve de regreso (desplazando alguna otra cosa) cuando los necesita.

Algunas particiones tienen ciertas representaciones asociadas con ellas.


Partición

Representación

a

Normalmente contiene el sistema de ficheros raíz

b

Normalmente contiene el espacio de intercambio (swap)

c

Normalmente el mismo tamaño de la slice (“porción” o “rebanada”) que lo encierra. Esto permite a las utilidades que necesitan trabajar en la slice entera (por ejemplo, un explorador de bloques dañados) trabajar en la partición c. Normalmente no debe usted crear un sistema de ficheros en esta partición.

d

La partición d solía tener un significado especial asociado, aunque ahora ya no lo tiene. En la actualidad algunas herramientas pueden comportarse de forma extraña si se les pide trabajar en la partición d, así que sysinstall no crear´ normalmente una partición d.

Cada partición-que-contiene-un-sistema-de-ficheros se almacena en lo que FreeBSD llama una slice. Porción es el término de FreeBSD para lo que comúnmente se conoce como partición, y de nuevo, conoce como partición, y de nuevo, esto se debe a la herencia UNIX de FreeBSD. Las slices están numeradas, empezando con 1, hasta 4


.Los números de slice siguen al nombre de dispositivo, a los que se antepone una s, comenzando desde 1. Así, “da0s1” es la primera slice en la primera unidad SCSI. Sólo puede haber cuatro slices físicas en un disco, pero puede haber slices lógicas dentro de slices físicas del tipo apropiado. Estas slices extendidas se numeran a partir de 5, así que “ad0s5” es la primera slice extendida en el primer disco IDE. Estos dispositivos se usan en sistemas de ficheros que se espera que ocupen una slice.

Tanto las slices y las unidades físicas “peligrosamente dedicadas”, como otras unidades contienen particiones, que se designan mediante letras desde a hasta h. Esta letra se añade al nombre del dispositivo, así que “da0a” es la partición a en la primera unidad da, la cual está “peligrosamente dedicada”. “ad1s3e” es la quinta partición en la tercera slice de la segunda unidad de disco IDE.


Finalmente, cada disco en el sistema tiene también su designación. El nombre de disco comienza por un código que indica el tipo de disco, luego un número, indicando qué disco es. A diferencia de las slices, la numeración de discos comienza desde 0. Los códigos comunes que usted verá se muestran en la Tabla 3-1.

Cuando se hace referencia a una partición, FreeBSD requiere que que también se nombre la slice y el disco que contiene la partición, y al referirse a una slice también debe referirse al nombre del disco. Esto se hace listando el nombre de disco, s (slice), el número de slice y por último la letra de la de slice y por último la letra de la partición. partición. Puede consultar varios ejemplos en la Ejemplo 3-1.

La Ejemplo 3-2 muestra un modelo conceptual del esquema de un disco que debería ayudarle a aclarar las cosas.

Para poder instalar FreeBSD debe primero configurar las particiones del disco, luego crear particiones dentro de la slice que utilizará para FreeBSD y luego crear un sistema de ficheros (o espacio de intercambio, swap) en cada partición, y decidir dónde se van a montar esos sistemas de ficheros.


Tabla 3-1. Códigos de dispositivos de disco

Código

Significado

ad

Disco ATAPI (IDE)

da

Disco de acceso directo SCSI

acd

CDROM ATAPI (IDE)

cd

CDROM SCSI

fd

Disquete (floppy)

3-1. Ejemplo de nombres de disco, slices y partición

Nombre

Significado

ad0s1a

La primera partición (a) en la primera slice (s1) en el primer disco IDE (ad0).

da1s2e

La quinta partición (e) en la segunda slice (s2) en el segundo disco SCSI (da1).

Ejemplo 3-2. Modelo conceptual de un disco


Este diagrama muestra cómo ve FreeBSD el primer disco IDE en el sistema. Se asume que el disco es de 4 GB, y contiene dos particiones de 2 GB (particiones MS-DOS). La primera partición contiene un disco MS-DOSC:, y la segunda partición contiene una instalación FreeBSD. Esta instalación de ejemplo tiene tres particiones, y una partición swap.


Cada una de las tres particiones tiene un sistema de ficheros. La partición a se utilizará para el sistema de ficheros raíz, e para la jerarquía del directorio /var, y f para la jerarquía del directorio /usr.



El sistema de archivos se visualiza mejor como un árbol, enraizado, como lo está, en //dev/usr y los demás directorios en el directorio raíz son ramas, las cuales pueden tener sus propias ramas, como /usr/local, y así sucesivamente.


Existen varias razones para albergar algunos de estos directorios en sistemas de ficheros separados. /var contiene los directorioslog/spool/ y varios tipos de ficheros temporales y como tal, puede llenarse. Agotar el espacio del sistema de ficheros raíz no es una buena idea, así que separar /var de / suele ser muy recomendable.


Otra razón común para meter ciertos árboles de directorios en otros sistemas de ficheros es si van a estar albergados en discos físicos separados, o si son discos virtuales separados, como un montaje de sistema de ficheros de red, o unidades de CDROM.


fstab


Durante el proceso de arranque, los sistemas de ficheros listados en /etc/fstab se montan automáticamente (a menos que estén listados con la opción noauto).

/etc/fstab contiene una lista de líneas con el siguiente formato:


dispositivo /punto-de-montaje fstype opciones dumpfreq passno

dispositivo

Un nombre de dispositivo (debe existir).

punto-de-montaje

Un directorio (el cual debe existir), en donde montar el sistema de ficheros.

fstype

El tipo de sistema de ficheros para pasarle a mount(8). El tipo de sistema de ficheros por omisión de FreeBSD es ufs.

opciones

Ya sea rw para sistemas de ficheros de lectura-escritura, o ro para sistemas de ficheros de solo-lectura, seguido de cualquier otra opción que sea necesaria. Una opción común es noauto para sistemas de ficheros que no se montan normalmente durante la secuencia de arranque. Hay otras opciones en la página de manual mount(8).

dumpfreq

dump(8) la usa para determinar qué sistema de ficheros requiere volcado. Si el campo no está declarado se asume un valor de cero.

passno

Determina el orden en el cual los sistemas de ficheros deben revisarse. Los sistemas de ficheros que deben saltarse deben tener su passno a cero. El sistema de ficheros raíz (que, obviamente, necesita ser revisado antes que cualquier otro) debe tener su passno puesto a uno, y otros sistemas de ficheros deben tener valores mayores que uno. Si más de un sistema de ficheros tiene el mismo passno entonces fsck(8) tratará de revisarlos en paralelo de ser posible.

Consulte la página de manual de fstab(5) para mayor información sobre el formato del fichero /etc/fstab y las opciones que contiene.


mount


mount(8) es lo que se utiliza en última instancia para montar sistemas de ficheros.


En su forma más básica, se usa lo siguiente:


# mount dispositivo punto-de-montaje


Existe una gran cantidad de opciones, tal y como consta en mount(8), pero las más comunes son:


Opciones de montaje

-a

Montar todos los sistemas de ficheros listados en /etc/fstab. Excepto aquellos marcados como “noauto”, excluidos por la bandera -t, o aquellos que ya están montados.

-d

Realizar todo excepto la llamada real de montaje del sistema. Esta opción es útil junto con la bandera -v para determinar lo que mount(8) está tratando de hacer en realidad.

-f

Forzar el montaje de un sistema de ficheros sucio (es decir, peligroso), o forzar la revocación de accesos de escritura cuando se cambia el estátus de un sistema de archivos de lectura-escritura a só-lectura.

-r

Montar el sistema de ficheros como sólo-lectura. Esto es idéntico a utilizar el argumento ro (rdonly para versiones más antiguas que FreeBSD 5.2) en la opción -o.

-t fstype

Montar el sistema de ficheros dado con el tipo de sistema de ficheros, o montar solamente sistemas de ficheros del tipo dado, si se proporciona la opción -a.

“ufs” es el sistema de ficheros raíz por omisión.

-u

Actualizar puntos de montaje en el sistema de ficheros.

-v

Mostrar mayor información.

-w

Montar el sistema de ficheros como lectura-escritura.

La opción -o toma una lista de opciones separada por comas, incluyendo las siguientes:

nodev

No interpretar dispositivos especiales en el sistema ficheros. Es una opción de seguridad que puede ser muy útil.

noexec

No permitir la ejecución de binarios en este sistema de ficheros. Esta también es una opción de seguridad útil.

nosuid

No interpretar banderas setuid o setgid en el sistema de ficheros. Esta también es una opción de seguridad útil.

umount


umount(8) toma, como parámetro, un punto de montaje, un nombre de dispositivo, o la opción -a-A.

Todas las formas toman -f para forzar el desmontaje, y -v para mostrar más información.

Tenga muy en cuenta que usar -f no suele ser una forma recomendable de proceder. Desmontar a la fuerza los sistemas de ficheros puede acarrear el congelar la máquina o dañar los datos en el sistema de ficheros.


-a-A se usan para desmontar todos los sistemas de ficheros montados, con la ventaja de poder elegir el tipo de sistema de ficheros que se use tras -t. De todas maneras -A no trata de desmontar el sistema de ficheros raíz.



FreeBSD es un sistema operativo multitarea. Esto significa que parece como si más de un programa se estuviera ejecutando al mismo tiempo. Cada programa que se ejecuta en cualquier momento dado se denomina proceso.

Cada orden que ejecuta iniciará al menos un proceso nuevo, y hay muchos procesos que se están ejecutando en todo momento, manteniendo el sistema en funcionamiento.


Cada proceso tiene un identificador individual consistente en un número llamado ID del proceso, o PID, y, como fichero, cada proceso también tiene un propietario y un grupo. La información de propietario y grupo se usa para determinar qué ficheros y dispositivos puede abrir el proceso mediante los permisos de fichero explicados anteriormente. La mayoría de los procesos también tiene un proceso padre.

El proceso padre es el proceso que los inició. Por ejemplo, si está tecleando órdenes en la shell, la shell es un proceso, y cualquier orden que usted ejecute también lo será. De este modo, cada proceso que ejecute tendrá como proceso padre a su shell. La excepción es un proceso especial llamado init(8)init es siempre el primer proceso, así que su PID siempre es 1. init es arrancado automáticamente por el kernel cuando arranca FreeBSD.


Hay dos órdenes particularmente útiles para ver los procesos en el sistema, ps(1)top(1)ps se usa para mostrar una lista estática de los procesos que se ejecutan en el sistema en ese momento, y puede mostrar sus PID, cuánta memoria están usando, la línea de órdenes con la que fueron iniciados, y mucho más. top despliega todos los procesos que se están ejecutando, y actualiza la pantalla cada pocos segundos para que pueda ver lo que está haciendo su sistema.

Por defecto ps solo le muestra las órdenes que se están ejecutando y que sean propiedad de su usuario. Por ejemplo:


% ps

PID TT STAT TIME COMMAND

298 p0 Ss 0:01.10 tcsh

7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)

37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)

48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi

48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)

72210 p0 R+ 0:00.00 ps

390 p1 Is 0:01.14 tcsh

7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y

6688 p3 IWs 0:00.00 tcsh

10735 p4 IWs 0:00.00 tcsh

20256 p5 IWs 0:00.00 tcsh

262 v0 IWs 0:00.00 -tcsh (tcsh)

270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx — -bpp 16

280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc — -bpp 16

284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc

285 v0 S 0:38.45 /usr/X11R6/bin/sawfish


Como puede ver en este ejemplo, la salida de ps(1) está organizada en columnas.

PID es el ID de proceso anteriormente expuesto. Los PIDs se asignan partiendo de 1, hasta 99999, y dan la vuelta de regreso al principio cuando se terminan los números. La columna TT muestra el tty en el que el programa se está ejecutando, y podemos ignorarlo tranquilamente por el momento. STATmuestra el estado del programa, y también podemos ignorarlo.

TIME es la cantidad de tiempo que el programa ha se ha estado ejecutando en la CPU (generalmente no es el tiempo transcurrido desde que se inició el programa, ya que la mayoría de los programas pasan mucho tiempo esperando antes de que necesiten gastar tiempo en la CPU. Finalmente, COMMAND es la línea de órdenes que se empleó para ejecutar el programa.


ps(1) admite muchas opciones diferentes acerca de la información que se desea ver. Uno de los conjuntos más útiles es auxwwadespliega información acerca de todos los procesos ejecutándose, no solamente los suyos. u despliega el nombre de usuario del propietario del proceso, así como el uso de memoria. x despliega información acerca de los procesos dæmon y ww hace que ps(1)despliegue la línea de órdenes completa, en lugar de truncarla cuando es demasiado larga para caber en la pantalla.

La salida de top(1) es similar. Veamos un ejemplo:


% top

last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10

47 processes: 1 running, 46 sleeping

CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle

Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free

Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

 

 

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND

72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top

7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14

281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA

296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm

48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu

175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd

7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt

La salida está dividida en dos secciones. La cabecera (las primeras cinco líneas) muestra el PID del último proceso en ejecutarse, la carga promedio del sistema (una medida de la carga del sistema), el “uptime” del sistema (tiempo desde el último reinicio) y la hora actual. Las otras cifras en la cabecera se relacionan con cuántos procesos hay en ejecución en el sistema (47 en este caso), cuánta memoria y espacio de intercambio (swap) está en uso, y cuánto tiempo está el sistema en diferentes estados de CPU.

Más abajo hay una serie de columnas con información similar a la salida de ps(1). Igual que antes, puede usted ver el PID, el nombre de usuario, la cantidad de tiempo de CPU en uso y la orden que se ejecutó. top(1) también mostrará por defecto la cantidad de espacio de memoria que emplea cada proceso.

Esto está dividido en dos columnas, una para el tamaño total y otra para el tamaño residente (el tamaño total es cuánta memoria ha necesitado la aplicación y el tamaño residente es cuánta se está usando en ese momento concreto). En este ejemplo puede verse que Netscape® requerido casi 30 MB de RAM, pero actualmente solo está usando 9 MB.


top(1) actualiza automáticamente el listado cada dos segundos, pero este lapso puede cambiarse mediante la opción s.

cuando ejecuta un editor es fácil controlarlo, decirle que cargue ficheros y demás. Puede hacerse porque el editor permite ese control, y porque el editor depende de una terminal. Algunos programas no están diseñados para ser ejecutados con entradas continuas por parte del usuario, así que se desconectan de la terminal a la primera oportunidad. Por ejemplo, un servidor web pasa todo el día respondiendo peticiones web, y normalmente no necesita ninguna entrada de su parte. Los programas que transportan correo electrónico de un sitio a otro son otro ejemplo de esta clase de aplicación.


Llamamos a estos programas dæmons. Los Dæmons eran personajes de la mitología griega; no eran ni buenos ni malos, eran pequeños espíritus sirvientes que, en gran medida, hacían cosas útiles por la humanidad. Algo muy parecido a cómo los servidores web y los servidores de correo hacen hoy día tantas cosas útiles para nosotros. Por eso, desde hace mucho tiempo, la mascota de BSD es ese dæmon de aspecto tan ufano con su tridente y su cómodo calzado deportivo.


Hay una norma según la cual se da nombre a los programas que suelen ejecutarse como dæmons con una “d” final. BIND es el dæmon de nombres de Berkeley (y el programa que en realidad se ejecuta se llama named); el servidor web Apache se llamahttpd, el dæmon de “spool” de impresora de línea es lpd y así sucesivamente. Se trata de un acuerdo, no una ley férrea; por ejemplo el dæmon principal de correo de Sendmail se llama sendmail, y no maild, como podría suponerse visto lo precedente.


Algunas veces necesitará comunicarse con un dæmon. Estas comunicaciones se denominan señales; es posible comunicarse con un dæmon (o con cualquier otro proceso ejecutándose) mandándole una señal. Existen diversos tipos de señales diferentes que puede mandar (algunas de ellas tienen un significado especial, otras son interpretadas por la aplicación, y la documentación de la aplicación le dirá como interpreta la señal esa aplicación).

Solo puede enviar una señal a un proceso del que sea usted propietario. Si manda una señal a un proceso de otro usuario con kill(1)kill(2) verá un mensaje del sistema en el que se le comunica que no tiene permiso para hacer tal cosa. La excepción a esto es el usuario root, que puede mandar señales a los procesos de cualquier usuario del sistema.


FreeBSD también enviará señales de aplicación en determinados casos. Si una aplicación está mal escrita, y trata de acceder a memoria a la que no está previsto que acceda, FreeBSD manda al proceso la señal Violación de segmento (SIGSEGV). Si una aplicación ha utilizado la llamada de sistema alarm(3) para ser avisada después de que un periodo de tiempo haya transcurrido, se le mandará la señal de alarma (SIGALRM), y así sucesivamente.


Hay dos señales que pueden usarse para detener un proceso, SIGTERMSIGKILLSIGTERM es la manera amable de matar un proceso; el proceso puede recibir la señal, darse cuenta que usted quiere que se apague, cerrar cualquier fichero de log que pueda tener abierto y generalmente terminar cualquier tarea que esté realizando en ese momento antes de apagarse. En algunos casos un proceso puede incluso ignorar SIGTERM si se encuentra inmerso en una tarea que no puede ser interrumpida.

Por el contrario, un proceso no puede ignorar una señal


SIGKILL. Esta es la señal “No me importa lo que estás haciendo, detente ahora mismo”. Si manda un SIGKILL a un proceso FreeBSD detendrá ese proceso inmediatamente.[1] .


Otras señales que puede usar: SIGHUPSIGUSR1SIGUSR2. Son señales de propósito general, y aplicaciones diferentes pueden hacer cosas diferentes cuando se utilicen.


Suponga que ha cambiado el fichero de configuración de su servidor web; parece un buen momento para decirle al servidor web que lea y aplique la configuración. Podría detener y reiniciar httpd, pero esto implicaría un período breve de suspensión del servicio de su servidor web, lo cual puede no ser asumible. La mayoría de los dæmons fueron creados pensando que fueran capaces de responder a la señal SIGHUP releyendo su fichero de configuración. En lugar de matar y reiniciar httpd le podría mandar la señal SIGHUP. Dado que no hay una manera estándar para responder a estas señales, diferentes dæmons tendrán diferente comportamiento, así que asegúrese de leer la documentación del dæmon en cuestión.


Las señales se envian mediante kill(1), como puede verse en el siguiente ejemplo.


Envío de una señal a un proceso


Este ejemplo muestra como enviar una señal a inetd(8). El fichero de configuración de inetd es /etc/inetd.confinetdreleerá dicho fichero de configuración cuando se le envíe un SIGHUP.


1. Identifique el ID de proceso del proceso al que quiere enviarle la señal mediante ps(1)grep(1)grep(1) se usa para buscar cadenas de texto de su elección en la salida estándar. Puede ejecutarse como un usuario normal, mientras que inetd(8) se ejecuta como root, así que debe pasarle los parámetros axps(1).

2. % ps -ax | grep inetd

3. 198 ?? IWs 0:00.00 inetd -wW

Vemos que el PID de inetd(8) es 198. En algunos casos grep inetd también puede aparecer en esta salida. Esto se debe a la manera en que ps(1) tiene que encontrar la lista de procesos ejecutándose.


4. Utilice kill(1) para enviar la señal. Debido a que inetd(8) está siendo ejecutado por root tendrá que usar primero su(1) para volverse root.


5. % su

6. Password:

7. # /bin/kill -s HUP 198

Del mismo modo que la mayoría de órdenes UNIX® kill(1) no imprimirá ninguna salida si ha funcionado bien. Si envía una señal a un proceso del que no es el propietario entonces verá “kill: PID: Operation not permitted”. Si usted no teclea bien el PID puede enviar la señal a un proceso distinto, lo cual puede ser malo, o, si tiene suerte, habrá enviado la señal a un proceso que no está en uso, y verá “kill: PID: No such process”.

¿Por qué utilizar /bin/kill?: Muchos shells incorporan su propio kill; esto es, el shell mandará la señal directamente, en lugar de ejecutar /bin/kill. Esto puede ser muy útil, pero diferentes shells tienen diferentes sintaxis para especificar el nombre de la señal que envía. En lugar de tratar de aprederse todas ellas, es más fácil usar /bin/kill... sea la que sea la shell que prefiera usar.


El envío de otras señales es muy similar, solamente sustituya TERMKILL en la línea de órdenes según sea necesario.


Importante: Matar procesos aleatorios en el sistema es una mala idea. En particular, init(8), ID de proceso 1, es muy especial. Ejecutar /bin/kill -s KILL 1 es una manera rápida de apagar su sistema. Siempre revise dos veces los argumentos con los que ejecuta kill(1) antes de pulsar Enter.

Notas


[1]

Esto no es del todo cierto (ciertas cosas no pueden ser interrumpidas. Por ejemplo, si el proceso está tratando de leer desde un fichero que está en otro sistema de la red, y el otro sistema no está disponible por alguna razón (por estar apagada, o que la red tenga un fallo), tenemos un caso de lo que llamamos “proceso ininterrumpible”. Más tarde, al proceso se le acabará el tiempo de espera, generalmente pasados dos minutos. Tan pronto como esto ocurra el proceso será liquidado.

En FreeBSD gran parte del trabajo diario se hace en una interfaz de línea de órdenes llamada shell. El trabajo principal de la shell es ir recibiendo órdenes mediante un canal de entrada y ejecutarlos.

Muchas shells también tienen funciones integradas para ayudar con las tareas diarias como manipulación de ficheros, gestión de archivos con expresiones regulares, edición en la propia línea de órdenes, macros de órdenes y variables de entorno. FreeBSD incluye diversas shells, como sh, el shell Bourne y tcsh, el shell C mejorado. Hay muchas otras shells disponibles en la colección de ports de FreeBSD, como zshbash.


¿Qué shell usar? es realmente una cuestión de gustos. Si va a programar en C puede preferir usar una shell tipo C, como tcsh. Si viene del mundo Linux o si es nuevo en la interfaz de línea de órdenes de UNIX® puede probar con bash.

Tenga en cuenta que cada shell posee unas propiedades únicas que pueden o no funcionar con su entorno de trabajo preferido, y que puede usted elegir qué shell usar.


Una de las propiedades comunes de las shell es que completan los nombres de fichero. Una vez que ha introducido las primeras letras de una orden o del nombre de un fichero, se puede hacer que la shell complete automáticamente el resto de la orden o nombre de fichero pulsando la tecla Tab.

Veamos un ejemplo. Suponga que tiene dos ficheros llamados talcualtal.cual. Usted quiere borrar tal.cual. Lo que habría que teclear es: rm ta[Tab].[Tab].

La shell mostraría en pantalla rm fo[BIP].cual.


El [BIP] es la campana de la consola, es decir, la shell está diciéndome que no pudo completar totalmente el nombre de fichero porque hay más de una coincidencia. Tanto talcual como tal.cual comienzan por ta, pero solo se pudo completar hastatal. Si se teclea ., y de nuevo Tab, entonces la shell es capaz de añadir el resto del nombre de fichero.


Otra función de la shell son las variables de entorno. Las variables de entorno son parejas de valores clave almacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por la shell y, por lo tanto, contiene mucha configuración de programas. Esta es una lista de las variables de entorno más comunes y su significado:


Variable

Descripción

USER

Nombre de usuario en el sistema.

PATH

Lista de directorios, separados por punto y coma, en los que se buscan ejecutables.

DISPLAY

Nombre de red de la pantalla X11 a la que conectarse, si está disponible.

SHELL

La shell actual.

TERM

El nombre de la terminal del usuario. Se usa para determinar las características de la terminal.

TERMCAP

Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en la terminal.

OSTYPE

Tipo de sistema operativo. Por ejemplo, FreeBSD.

MACHTYPE

Arquitectura de CPU en la que se está ejecutando el sistema.

EDITOR

El editor de texto preferido por el usuario.

PAGER

El paginador de texto preferido por el usuario.

MANPATH

Lista de directorios separados por punto y coma en los que se buscan páginas de manual.


Establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en las shells al estilo C como tcshcsh, se usaría setenv para establecer las variables de entorno. Bajo shells Bourne como shbash, se usaría export para establecer las variables de entorno actuales.

Por ejemplo, para establecer o modificar la variable de entorno EDITOR (bajo cshtcsh) la siguiente orden establece EDITOR como /usr/local/bin/emacs:


% setenv EDITOR /usr/local/bin/emacs

Bajo shells Bourne:

% export EDITOR="/usr/local/bin/emacs"

También se puede hacer que la mayoría de las shells muestren el contenido de una variable de entorno situando el carácter $delante del nombre de la variable en la línea de órdenes. Por ejemplo, echo $TERM mostrará cualquiera que sea el valor que haya establecido para $TERM, porque la shell expande el valor de $TERM y se lo pasa al programa echo.


Las shells manejan muchos caracteres especiales, llamados metacaracteres, como representaciones especiales de datos. El más común es el caracter *, que representa cualquier número de caracteres en un nombre de fichero. Estos metacaracteres especiales se pueden usar para la expansión de nombres de fichero. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque el shell toma todos los ficheros que coinciden con * y se los pone en la línea de órdenes para que echo los vea.


Para evitar que la shell interprete estos caracteres especiales se pueden escapar de la shell anteponiéndoles una contrabarra ().echo $TERM imprime el nombre de terminal que esté usando. echo $TERM imprime $TERM, literalmente.


La manera más fácil de cambiar de shell es mediante chshchsh le colocará dentro del editor que esté configurado en la variable de entorno EDITOR; si no la ha modificado, el sistema ejecutará vi, el editor por defecto. Cambie la línea “Shell:” según prefiera.


También se le puede suministrar a chsh la opción -s; ésto establecerá la shell sin necesidad de entrar en el editor de texto. Si por ejemplo quiere que bash sea su shell por defecto puede configurarlo del siguiente modo:


%

chsh -s /usr/local/bin/bash


Ejecutar chsh sin parámetros y editar la shell desde ahí también funciona.


Nota: La shell que se desee usar debe estar incluida en /etc/shells. Si se ha instalado una shell desde la colección de ports esto deberí estar hecho automáticamente.

Si ha instalado la shell manualmente, tendrá usted que realizar dicha modificación de/etc/shells.


Por ejemplo, si instaló manualmente bash y lo ubicó en /usr/local/bin, debería hacer lo siguiente:


# echo "/usr/local/bin/bash" >> /etc/shells

Y volver a ejecutar chsh.

Gran parte de la configuración de FreeBSD se realiza modificando ficheros de texto. Por esta razón le conviene familiarizarse con un editor de texto. FreeBSD viene con unos cuantos como parte del sistema base y encontrará muchos más en la colección de ports.


El editor de textos más sencillo y fácil de aprender es uno llamado ee, cuyo nombre proviene del inglés «easy editor» (editor fácil). Para iniciar ee se debe teclear en la línea de órdenes ee nombre-de-fichero, donde nombre-de-fichero es el nombre del fichero que se quiere editar. Por ejemplo, para editar /etc/rc.conf teclée ee /etc/rc.conf. Una vez dentro de eetodas las órdenes para manipular las funciones del editor están listadas en la parte superior de la pantalla. El caracter ^ representa la tecla Ctrl del teclado, por lo tanto ^e se expande a la combinación de teclas Ctrl+e. Para salir de ee, pulse la tecla Esc y elija abandonar (leave) el editor. El editor preguntará entonces si se desean conservar los cambios si el fichero hubiera sido modificado.


FreeBSD viene también con editores de texto mucho más potentes, como vi, como parte del sistema base, mientras que otros editores, como Emacsvim, son parte de la colección de ports de FreeBSD (editors/emacseditors/vim). Estos editores ofrecen mucha más funcionalidad y poder con la desventaja de ser un poco más complicados de aprender a manejar. De cualquier manera si planea hacer mucho trabajo de edición de texto, aprender a usar un editor de texto más poderoso como vimEmacs le ahorrará más tiempo a la larga.


Un dispositivo es un término utilizado la mayoría de las veces para actividades relacionadas con hardware del sistema, como discos, impresoras, tarjetas gráficas y teclados. Cuando FreeBSD arranca, la mayoría de lo que FreeBSD despliega son dispositivos en el momento de ser detectados. Si lo desea, puede volver a ver todos los mensajes que el sistema emite durante el arranque consultando /var/run/dmesg.boot.


Por ejemplo, acd0 es la primera unidad CDROM IDE, mientras que kbd0 representa el teclado.


En un sistema operativo UNIX®, debe accederse a la mayoría de estos dispositivos a través de ficheros especiales llamados nodos de dispositivo, que se encuentran en el directorio /dev


Cuando agregue un nuevo dispositivo a su sistema, o compile soporte para dispositivos adicionales, puede que necesite crear uno o más nodos de dispositivo.

En sistemas sin DEVFS (esto concierne a todas las versiones anteriores a FreeBSD 5.0), los nodos de dispositivo son creados utilizando MAKEDEV(8) como puede verse en el siguiente ejemplo:

# cd /dev

# sh MAKEDEV ad1

Este ejemplo debe crear el nodo de dispositivo apropiado para la segunda unidad IDE instalada.


DEVFS Dispositivo de sistema de ficheros (DEVice File System)


El dispositivo de sistema de ficheros, o DEVFS, ofrece acceso a dispositivos del espacio de nombres del kernel en el espacio de nombres del sistema de ficheros global. En lugar de tener que crear y modificar nodos de dispositivo, DEVFS se encarga del mantenimiento dinámico de este sistema de fichero.

Consulte devfs(5) si quiere más información.

DEVFS se utiliza por defecto en FreeBSD 5.0 y siguientes.

Para entender por qué FreeBSD utiliza el formato elf(5), primero debe saber unas cuantas cosas sobre los tres formatos de ejecutables “dominantes” en UNIX®:

· a.out(5)

El formato objeto de UNIX más antiguo y “clásico”. Utiliza una cabecera corta y compacta con un número mágico al inicio que es usado frecuentemente para identificar el formato (vea a.out(5) para más información). Contiene tres segmentos cargados: .text, .data, y .bss además de una tabla de símbolos y una tabla de cadena (“strings”).

· COFF

El formato objeto de SVR3. La cabecera consiste en una tabla de sección, para que pueda ntener más contenido además de las secciones .text, .data, y .bss.

· elf(5)

El sucesor de COFF; dispone de secciones múltiples y valores posibles de 32-bits o 64-bits. Una gran desventaja: ELF fué también diseñado asumiendo que solamente existiría una ABI por cada arquitectura de sistema. Esa suposición es en realidad bastante incorrecta y siquiera en el mundo comercial SYSV (el cual tiene al menos tres ABIs: SVR4, Solaris y SCO) se puede dar por buena.

FreeBSD trata de solucionar este problema de alguna manera ofreciendo una herramienta para marcar un ejecutable ELFconocido con información acerca de la ABI con la que funciona. Si quiere más información consulte la página de manual debrandelf(1).


FreeBSD viene del campo “clásico” y ha utilizado el formato a.out(5), una tecnología usada y probada en muchas de muchas generaciones de versiones de BSD hasta el inicio de la rama 3.X. Aunque era posible compilar y ejecutar binarios nativos ELF (y kernels) en un sistema FreeBSD desde algún tiempo antes de esto, FreeBSD al principio se mantuvo “contra corriente” y no cambió a ELF como formato por defecto. ¿Por qué? Bueno, cuando el mundo Linux efectuó su dolorosa transición a ELF no fué tanto por huir del formato a.out como por su inflexible mecanismo de bibliotecas compartidas basado en tablas de saltos, que hacía igual de difícil la construcción de bibliotecas compartidas tanto para los desarrolladores como para los proveedores. Ya que las herramientasELF disponibles ofrecían una solución al problema de las bibliotecas compartidas y eran vistas por mucha gente como “la manera de avanzar”, el costo de migración fué aceptado como necesario y se realizó la transición. El mecanismo de bibliotecas compartidas de FreeBSD está diseñado de manera más cercana al estilo del sistema de bibliotecas compartidas de SunOS™ de Sun y, como tal, es muy sencillo de utilizar.


Entonces, ¿por qué existen tantos formatos diferentes?


En un tiempo muy, muy lejano, existía hardware simple. Este hardware tan simple soportaba un sistema pequeño, simple. a.out era idóneo para el trabajo de representar binarios en este sistema tan simple (un PDP-11). A medida que la gente portaba UNIX desde este sistema simple, retuvieron el formato a.out debido a que era suficiente para los primeros portes de UNIX a arquitecturas como 68k de Motorola, VAXen, etc.


Entonces algún brillante ingeniero de hardware decidió que si podía forzar al software a hacer algunos trucos sucios podría sortear ciertos obstáculos del diseño y permitir al núcleo de su CPU correr más rápidamente. Aunque estaba hecho para trabajar con este nuevo tipo de hardware (conocido entonces como RISC), a.out no estaba bien adaptado para este hardware, así que varios formatos fueron desarrollados para obtener un mejor rendimiento de este hardware que el limitado, simple formato a.outCOFF,ECOFF y algunos otros formatos más extraños fueron inventados y sus limitaciones exploradas hasta que se fué llegando a la elección en favor de ELF. podría ofrecer. Así fué cómo

Además, el tamaño de los programas estaba volviendose gigantes y los discos (y la memoria física) eran relativamente pequeños, así que el concepto de una biblioteca compartida nació. El sistema VM también se volvió más sofisticado. Mientras cada uno de estos avances fué hecho utilizando el formato a.out, su utilidad se iba reduciendo paulatinamente con cada nueva opción. Además, la gente quería cargar cosas dinámicamente en el momento de ejecución, o descartar partes de su programa después de que el código de inicio se ejecutara para ahorrar memoria principal y espacio de swap. Al volverse más sofisticados los lenguajes, la gente empezó a ver la necesidad de introducir código antes del inicio del programa de forma automática. Se hicieron muchos hacks al formato a.out para permitir que todas estas cosas sucedieran, y lo cierto es que por un tiempo funcionaron. Pero a.out no estaba no estaba para solucionar todos estos problemas sin incrementar la carga y complejidad del código. Aunque ELFELF tuvo que esperar hasta que fué más doloroso permanecer con a.out que migrar a ELF. resolvía muchos de estos problemas, en ese momento hubiera sido terrible dejar de lado un sistema que sencillamente funcionaba, así que

De todas maneras, con el paso del tiempo, las herramientas de construcción de las que FreeBSD derivó las suyas propias (el ensamblador y el cargador, sobre todo) evolucionaron en dos árboles paralelos. El árbol FreeBSD añadió bibliotecas compartidas y corrigió algunos errores. La gente de GNU que originalmente escribió estos programas los reescribió y añadieron una forma más simple para disponer de compiladores cruzados (“cross compilers”), usando diferentes formatos a voluntad, etc. Aunque mucha gente quería compiladores cruzados con FreeBSD como blanco no estaban de suerte, porque los fuentes que FreeBSD tenía para asld no estaban listos para cumplir esa tarea. La nueva cadena de herramientas GNU (binutils) soporta compilación cruzada, ELF, bibliotecas compartidas, extensiones C++, etc. Además, muchos proveedores están liberando binarios ELF, y es algo muy bueno que FreeBSD los pueda ejecutar.


ELF es más expresivo que a.out y permite un sistema base más extensible. Las herramientas ELF están mejor mantenidas y ofrecen soporte de compilación cruzada, muy importante para mucha gente. ELF puede ser un poco más lento que a.out, pero tratar de medirlo puede ser difícil.

También existen numerosos detalles que son diferentes entre los dos en cómo mapean páginas, cómo gestionan código de inicio, etc. Ninguno de estos es muy importante, pero existen diferencias. Con el tiempo, el soporte paraa.out será eliminado del kernel GENERIC, y es muy posible que se elimine del kernel la posibilidad de ejecutar tales binarios una vez que la necesidad de usar programas a.out haya pasado.

La documentación más exhaustiva de FreeBSD está en las páginas de manual. Casi todos los programas del sistema vienen con un breve manual de referencia explicando el funcionamiento básico y sus diferentes argumentos. Estos manuales pueden revisarse mediante man. El uso de man es simple:


% man orden

orden es el nombre de la orden sobre la que que desea saber. Por ejemplo, para más información sobre ls escriba:


% man ls

El manual en línea está dividido en secciones numeradas:


1. Comandos de usuario.

2. Llamadas al sistema y números de error.

3. Funciones en las bibliotecas de C.

4. Controladores de dispositivo.

5. Formatos de fichero.

6. Juegos y demás pasatiempos.

7. Información sobre temas diversos.

8. Comandos relacionados con el mantenimiento del sistema y su funcionamiento.

9. Desarrolladores del Kernel.


En algunos casos, el mismo tema puede aparecer en más de una sección del manual en línea. Por ejemplo, existe una orden de usuario chmod y una llamada del sistema chmod(). En este caso se le puede decir a man cuál desea consultar especificando la sección:


% man 1 chmod

Esto desplegará la página de manual de la orden de usuario chmod. Las referencias a una sección concreta del manual en línea tradicionalmente suelen colocarse entre paréntesis en la documentación escrita, por lo tanto chmod(1) se refiere a la orden de usuariochmodchmod(2) se refiere a la llamada de sistema.

Esto está muy bien si se conoce el nombre del programa y simplemente se quiere saber como usarlo. Pero, ¿y si no puede recordar el nombre de la orden? Se puede usar man para que realice una búsqueda mediante palabras clave en las descripciones de programas utilizando el argumento -k:


% man -k mail

Dicha orden mostrará una lista de órdenes que contengan la palabra clave “mail” en sus descripciones. Esto es funcionalmente equivalente a usar apropos.

Así que, ¿está viendo todos esos programas tan atractivos en /usr/bin pero no tiene ni la menor idea de lo que la mayoría de ellos hace? Haga lo siguiente:


% cd /usr/bin

% man -f *

o

% cd /usr/bin

% whatis *

que hace exactamente lo mismo


FreeBSD incluye muchas aplicaciones y utilidades producidas por la FSF (Free Software Foundation). Además de con las correspondientes páginas de manual, estos programas vienen con documentos de hipertexto más detallados, llamados ficherosinfo, los cuales pueden ser visualizados con info, o si tiene instalado emacs, con el modo info de emacs.

Si quiere utilizar la orden info(1) simplemente teclée:

% info

Para una breve introducción, teclée h. Para una referencia rápida, teclée ?.


Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 The FreeBSD Documentation Projec

Fuente:

https://www.ibercom.com/soporte/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=71

http://www.freebsd.org

http://www.nierox.com/2007/10/lista-de-comandos-basicos-para-freebsd/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *