viernes, 23 de octubre de 2009

Algunas de Vi: Copiar y Pegar

Copiar y Pegar

Key Función
yy or Y Copia una linea al buffer.
nyy or nY Copia n lineas al buffer.
yw Copia una palabra al buffer.

ynw or nyw Copia n palabras al buffer.
y$ Copia el texto desde el cursor hasta el final de la linea.

“ayy Copia una lina al buffer llamado a.

“Ayy Agrega una linea al buffer llamado A.

p Pega texto a la derecha del cursor.

P Pega texto a la izquierda del cursor.

np Pega n copias de texto a la derecha del cursor.

“ap Pega el contenido del buffer a hacia la derecha del cursor.

“c3P Pega 3 copias de texto del buffer c hacia la izquierda del cursor.

“add Mueve la linea al buffer llamado a.

“a5dd Mueve 5 lineas al buffer llamado a.

dw Elimina una palabra y la pone en el buffer.

Algunas de Vi: Eliminar

Eliminar con Vi

Key Función
x Elimina el caracter donde está el cursor.

X Elimina el caracter antes del cursor.

dw Elimina una palabra.

dd Elimina una linea.

D Elimina todo el texto después del cursor hasta el final de la linea.

dL Elimina todo el texto después del cursor hasta el final de la pantalla.

dG Elimina todo el texto desde el cursor hasta el final del archivo.

d^ Elimina todo el texto desde el inicio de la linea hasta el cursor.

d1g Elimina todo el texto desde el inicio del archivo hasta el cursor.

dn$ Elimina todo el texto desde el cursor hasta la linea n especificada.


Algunas de Vi: Añadir texto

Comandos para añadir texto
key     Función
i Inserta texto a la izquierda del cursor.

I Inserta texto antes del primer caracter sin espacio.

a Agrega texto a la derecha del cursor.

A Agrega texto al final de la linea.

o Empieza una nueva linea debajo de la linea actual.

O Empieza una nueva linea encima de la linea actual.


cw Cambia una palabra.
cs Cambiar una oración.

c$ or C Cambia la linea actual

r Reemplaza un caracter.

R Reemplaza texto hasta que la tecla ESC es presionada.

s Substituye texto por el caracter actual.

Algunas de Vi: Desplazamiento

Comando de desplazamiento del cursor


Key Función
h Mueve el cursor un caracter a la izquierda.
j Mueve el cursor una linea hacia abajo.
k Mueve el cursor una linea hacia arriba.
l Mueve el cursor un caracter a la derecha.
Ctrl-G Muestra la linea actual.
nG Ir hacia la linea especificada por n.
Ctrl-f Mueve hacia adelante una pantalla.
Ctrl-b Mueve hacia atrás una pantalla.
Ctrl-d Mueve hacia adelante media pantalla.
Ctrl-u Mueve hacia atrás media pantalla.
w Ir al principio de la siguiente palabra Moves to the start of the next word.
e Ir al fin de la siguiente palabra.
^ Ir a la primera palabra de la linea actual.
$ Ir al fin de la linea actual.
Enter Ir a la siguiente linea.
- Ir al principio de la linea anterior.
G Ir al final del archivo.
% Ir hasta el parantesis correspondiente.
H Ir a la primera linea de la pantalla.
M Ir a la mitad de la pantalla.
L Ir al final de la pantalla.
n| Mover el cursos a la columna n.

viernes, 2 de octubre de 2009

DNS + Gentoo 1.0

A fin de mantener un buen seguimiento de las actividades que estoy realizando con la compu que me regalaron, esta es la documentación del DNS para fines locales y de pruebas.
Primero que nada vamos a dar las especificaciones del servidor:
Procesador Intel P4 de 2.8Ghz
Memoria 256 ram
Disco duro de 20gb
2 interfaces de red

El software para implementar el DNS ha sido el omnipresente bind9, para instalarlo solo basta con hacerle un simple emerge. También se instaló el paquete bind-tools para tener las herramientas para depuración y busqueda de información de registros DNS (nslookup, host, dig).
#emerge bind bind-tools

Una vez que portage haya terminado con su trabajo, los archivos para configurar bind se encontrarán en /etc/bind/ y /var/bind/.
Ahora es momento de definir el esquema de red. En mi caso consta de 2 portatiles + 1 PC(servidor) conectadas a un router inalámbrico.
Para esto usaremos:

Dominio: bitclux
lap1: nuix 192.168.1.40
lap2: hyp 192.168.1.30
servidor: v00wix 192.168.1.254
router: router 192.168.1.1
admin: root
Red Local: 192.168.1.0

Configurando el archivo "/etc/named.conf"

#vi /etc/named.conf
options {
directory "/var/bind";
listen-on-v6 { none; };
listen-on { 127.0.0.1; 192.168.1.254; };
pid-file "/var/run/named/named.pid";
};

#Declaración option: define opciones de configuracion globales
#entre las opciones mas usadas tenemos:
#directory: Reemplaza al directorio actual /var/named, por otro directorio que se indique.
#listen-on: Para especificar la interfaz de red por la que named escuchara las solicitudes; por defecto, el servicio named escuchara por todas las interfaces.
#listen-on-v6: Soporte para direcciones IPv6.

zone "bitclux" {
type master;
file "pri/bitclux.zone";
allow-transfer { any; };
};

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" {
type master;
file "pri/localhost.zone";
allow-transfer { none; };
notify no;
};

zone "127.in-addr.arpa" IN {
type master;
file "pri/127.zone";
allow-update { none; };
notify no;
};

#zona: porcion discreta del espacio de nombres de dominio
#existen opciones:
#allow-transfer: indica a los servidores esclavos que estan autorizados a pedir transferencia zona.
#allow-update: indica a los hosts que estan autorizados a actualizar dinamicamente la informacion de la zona.
#file: nombre de archivo que contiene la información de la zona
#notify: controla si se notifica a los servidores esclavos.
#type: tipo de zona:
*hint: Para orientar hacia los servidores root para perticiones de nombres que no se conocen.
*master: Servidor con autorizacion de zona

Configuración de los registros de la zona "/var/bind/"
#vi /var/bind/bitclux.zone

$TTL 2d
@ IN SOA ns.bitclux. root.bitclux. (
20091001 //serial
3h //tiempo de refresco
1h //tiempo de reintentos
1w //tiempo de expiración
1d ) //ttl minimo

bitclux. IN NS ns.bitclux.
ns.bitclux. IN A 192.168.1.254
ns.bitclux. IN A 192.168.1.253
router.bitclux. IN A 192.168.1.1
nuix.bitclux. IN A 192.168.1.40
hyp.bitclux. IN A 192.168.1.30
v00wix.bitclux. IN A 192.168.1.254

# $TTL: Indica el tiempo en segundos que el servidor mantiene el registro en memoria.
# $ORIGIN: Anexa el nombre de dominio a registros no cualificados, como aquellos con el nombre de host solamente
# SOA: Ubicado detras de las directivas, es el primer registro de recursos, e indica la autorizacion de una zona al servidor DNS
#@: Coloca la directiva $ORIGIN, como el espacio de nombres que esta siendo definida para el registro SOA


Finalmente agregamos el bind al runlevel por defecto, agregamos la direccion del servidor en /etc/resolv.conf e iniciamos el bind:
#rc-update add named default
#echo -e "nameserver 192.168.1.254" >> /etc/resolv.conf
#/etc/init.d/named start

=D

lunes, 20 de julio de 2009

Linux basicos

Estos son unos apuntes que he avanzado sobre Fedora, no son didacticos pero sirve como para ejercitar la memoria.

grub usa contraseña

el instalador de linux en modo texto es el diskdrup
el swap es el doble de la memoria RAM
********************
/bin ==> contiene archivos de sistema
/boot ==> contiene el gestor de arranque y todos los archivos para la configuracion de arranque del sistema.
/dev ==> Gestiona los dispositivos
/etc ==> Archivos utilitarios del sistema y otros
/home ==> Carpeta personal de cada usuario creado en Linux
/lib ==> Archivos de libreria
/media ==> Dispositivos multimedia
/mnt ==> Carpeta donde se montan los volumenes externos.
**#fdisk -l // lista las particiones
/net ==> Drivers de red
/opt ==> Archivos utilitarios hechos para linux. (staroffice, reproductores de musica)
/root ==> Carpeta personal del administradir /root
/sbin ==> Contiene archivos de sistema que solo pueden ser ejecutador por root
/var ==> Contiene archivos para servicios de red
Archivos de color verde son los ejecutables
Archivos celestes son archivos de enlace
Archivos de color rojo/blanco es para advertir su uso.
Archivos de color gris son archivos de texto simple
Archivos de color naranja/amarillo
Si se tiene 2 discos fisicos la nomenclatura es
dev /sda
dev /sdb
si se tiene mas de una particion en un mismo disco fisico
dev /sda1
dev /sda2
dev /sda3

Comandos Básicos
login /para iniciar sesion
logout /para terminar sesion
date /para ver la fecha del sistema
clear /para limpiar pantalla
ls /listar archivos
who /usuario activo con su respectiva consola
whoami /identifica al usuario actualmente conectado
pwd /la ruta actual
cal /muestra calendario
cat /lee archivos
> /crea, redirecciona un archivo
>> /agrega dentro de un archivo
man /manual sobre el comando

Usar vi completo
http://club.telepolis.com/jagar1/Unix/Vi.htm

cat /etc/inittab
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
Para cambiar la forma de inicialización del sistema
editar la linea en /etc/inittab
id:x:initdefault:
donde x es el numero de "runlevel"

Creacion de usuario
#adduser [usuario] //creación de usuario
#passwd [usuario] //creación de la contraseña .. **cuidado con el usuario**
#[ingresar contraseña]
para borrar la contraseña de algún usuario, editar el archivo /etc/passwd
usuario:x:500:500::/home/usuario:/bin/bash
se elimina la letra "x", y la borra será eliminada para el usuario.

Administración de Archivos

mkdir [carpeta 1] [carpeta 2] [carpeta 3]> Creación de carpetas
tree > muestra el arbol de archivos desde donde se ejecuto
cp [origen1][orgien2] [destino]> copiar archivos
mv [origen1][orgien2] [destino]> mover y renombrar archivos
rm [archivo 1][archivo 2]> eliminar archivos

Permisos de Usuarios

d rwx rwx rwx
r= read 4
w= escribir 2
x= ejecutar 1
7
1er grupo rwx >> Usuario
2do grupo rwx >> Grupos
3er grupo rwx >> Otros (usuarios remotos, usuarios windows, etc)

umask > mascara de usuario/permisos, se encuentra predeterminada en cada usuario.
Para conseguir los permisos con umask para root
777 -
022
755
rwxr-xr-x

cambiar permisos en linux
chmod u+-=rwx,g+-=rwx,o+-=rwx [directorio]
chmod 0 [directorio] /quita todos los permisos
chmod 777 [directorio] /provee todos los permisos
** chmod lee los permisos octales de derecha a izquierda como 000.
ejemplos
mkdir /umodelo
chmod u-rwx umodelo
chmod u-rwx,g+rwx,o-rwx umodelo
chmod g-w umodelo
chmod o+rw umodelo

Recuperar contraseña
Si se pierde la contraseña del root, se puede recuperar por el grub
editar el sistema que se requiere recuperar
agregar al final en las opciones del kernel, el parametro "single"
bootear desde el kernel modificado
cambiar la contraseña en /etc/passwd
reiniciar y bootear normalmente

Si se pierde la contraseña del root, se puede recuperar por un disco de arranque
boot: linux rescue
chroot /mnt/sysimage
passwd root (opcional)
*Esto recupera toda la inicializacion del sistema

Para configurar servicios básicos del sistema:

#setup
Habilitar servicios:
Los ejecutables de los servicios se encuentran en /etc/init.d/
#service [servicio] {start|stop|reload|restart|status}

tar
crear un paquete
#tar -cvf [origen] [destino]
listar un paquete
#tar -tvf [origen] [destino]
extraer un paquete
#tar -xfv [origen] [destino]

gzip
comprimir
#gzip [archivo1] [archivo2] ...
descomprimir
#gzip -d [archivo1] [archivo2] ...

rpm
instalar
rpm -ivf [paquetes]

miércoles, 22 de abril de 2009

USANDO LA SHELL

Entendiendo la SHELL
El shell permite al usuario insertar comandos y luego interpretarlos en instructiones para el SO linux. Exiten diferentes tipos de shells cada una para cada necesidad del usuario, entre las comunes tenemos sh, csh, ksh;por defecto se utiliza bash. Para cambiar de shell:
$/bin/[shell]
Para retornar a la shell anterior:
$exit
$ ctrl + D
Cada shell tiene un archivo de conifguracion de recursos correspondidos (rc file) situado en /etc que contiene las configuracion globales de la shell.
$/etc/bash.bashrc
$/etc/csh.cshrc
Tambien cada usuario tiene un archivo de configuracion de la shell situado en:
$~/.bashrc
Para ver todas las shells del sistema
#cat /etc/shells
Con el comando chsh se puede cambiar la shell por defecto del usuario. Las opciones que pueden ser usadas son:

option Alternate Function
-s --shells Specifies the default login shell for this user
-l --list Lists the shells specified in the /etc/shells file
-u --help Displays the options for the chsh command
-v --version Displays version information for the shell

Para conseguir que csh sea el shell por defecto:
$chsh -s /bin/csh
Despues de ejecutar se pedira la contraseña del usuario.
*Root solo puede cambiar la shell de otro usuario.
Se sugiere borrar los shells de /etc/shells que no se van a utilizar para que los usuarios solo puedan ejecutar los scripts en el shell predeterminado.

Usando la linea de comando
La shell se presenta como una interfaz de linea de comando. En el shell prompt se escriben lineas de comandos que luego se interpretan por la shell y luego se envian al sistema. Usualmente los shell muestran el nombre de usuario, el nombre del equipo, y el directorio localizado.
v00w@laphome /home/v00w$
Uno puede cambiar las opciones del prompt configurando el rc file de la shell, si se usa bash entonces habria que editar /etc/bashrc.

Los comandos escritos no son directamente interpretados por la shell para ello se necesita presionar la tecla enter. Esto ayuda para que los comandos sean editados antes de pasar sobre el sistema, los comandos siguen una sintaxis especifica.
$command [options] [arguments]
Options son codigos con letras unicas que son precedidos por un guion (-), y modifican el efecto del comando. Se pueden usar multiples opciones en un mismo comando, y estos tambein pueden ser sensibles a minusculas y mayusculas.
*La opcion -R es muy importarte ya que el comando corre de manera recursiva a traves de los subdirectorios del directorio analizado.
$ls -F
amsn_received/ Desktop/ Images/ Pictures/ Videos/
bin/ Documents/ Music/ public_html/
*la opcion -F es para diferenciar los directorios de los archivos.

Se pueden escribir varios comandos usando punto y coma (;) donde el primer comando se ejecutara antes de proceder con el siguiente.
v00w@linux-fd8r:~> ls -F ~/; ls -F ~/Documents/
amsn_received/ Desktop/ Images/ Pictures/ Videos/
bin/ Documents/ Music/ public_html/
bookmarks.html* e-books/ Linux/ Networking/ Varios/
DIRECCIONES.txt* fia/ LPI-study material/ Notes-Blog/

Se puede seguir escribiendo comandos en mas de una linea si se usa backslash al final de un comando, este caracter especial permite que se ejecute un salto de linea ignorando la ejecucion del comando cuando se presiona la tecla enter. Esto es muy útil para comandos extensos.
$ls -F /etc \
ls -F \usr

La shell tiene la opción de finalización de un comando (command completion), donde solo basta escribir las primeras letras del comando y luego presionar la tecla TAB, para que el sistema complete el comando.
$dm
Si se presiona TAB, el sistema completara:
$dmseg

Readline Library
El bash shell permite editar comandos escritos antes de ejecutarlos. El editor usado para editar estos comandos es Readline Library, este edito corre por defecto sobre emacs. Readline Library permite facilmente arreglar errores en la secuencia de comando sin tener que volver a escriber la secuencia entera.
La siguiente tabla muestra las combinaciones de tacla y las funciones de cada una de ellas:

Key Combination Function
Ctrl-b Move back one character
Ctrl -f Move forward one character
Del Delete the character to the left of the cursor
Ctrl-d Delete the character underneath the cursor
Ctrl-a Move to the start of the line
Ctrl-e Move to the end of the line
Esc-f Move forward a word
Esc-b Move backward a word
Ctrl-l Clear the screen, reprinting the current line at the top
Ctrl-k Kill(delete the text from the current cursor position to the end of the line
Esc-d Kill from the cursor to the end of the current word, or if between words, to the end of the next word
Esc-Del Kill from the cursor the start of the previous word, or if between words, to the start of the previous word.
Ctrl-w Kill from the cursor to the previous white space. This differs from Esc-del because the boundaries separating words differs.

La Sustitución de Comando(comand substitution) permite usar la salida de un comando como argumento de otro, es necesario usar el caracter " ` ` "
$echo `pwd`
/home/v00w/

Historial de comando contiene una lista de comandos emitidos por el command prompt. La cantidad de comando almacenados es especificado por la variable de entorno HISTSIZE en /etc/profile o ~/.profile. El valor por defecto para esta variable es de 1000 entradas. El comando history muestra todas las entradas del archivo historial que es ~/.bash_history.
$echo $HISTSIZE
1000
$ls
$cd /etc
$history
1 $echo $HISTSIZE
2 ls
3 cd /etc
4 history
La variable HISTCMD es usada para proveer un número de indexación al siguiente comando que se correrá.
$echo $HISTCMD
6
$ls -F /bin
$history
1 $echo $HISTSIZE
2 ls
3 cd /etc
4 history
5 echo $HISTCMD
6 ls -F /bin
7 history
La variable HISTFILE contiene la locacion del comando history.
$echo $HISTFILE
/home/v00w/.bash_history
La variable HISTFILESIZE contiene el maximo numero de lineas contenidas en HISTFILE.
$echo $HISTFILESIZE
1000

La utilidad fc provee otra opcion para editar comandos en el archivo history antes de correrlos.La utilidad fc abre el comando sobre un editor predeterminado, donde se puede editar un rango de eventos del historial antes de correrlos en una sola vez.
$fc -l 2 6
2 ls
3 cd /etc
4 history
5 echo $HISTCMD
6 ls -F /bin

Variables de Entorno y configuraciones
Cualquier comando ejecutado es un proceso, los procesos pueden ser iniciados por los usuarios o por el mismo sistema operativo.Además, un proceso puede crear otro como parte de su ejecución.
Cada proceso tiene asociado un entorno, una seria de variables que definen ciertos parámetros para el proceso. El entorno es expresado como una lista de variables y sus valores; ambos, el nombre de la variable y el valor son representados como strings que puede ser compuestos por la mayoria de caracteres.Cuando un proceso hijo es creado, hereda el entorno de su proceso padre; entonces, un proceso hijo puede modificar su entorno antes de pasarlo a su propio proceso hijo.

La variable PATH indica que directorios ve el sistema para ejecutar un comando, si es que ningun directorio no es especificado en el comando. Las variables pueden ser configuradas para el sistema usando el comando export.
#PATH=/home/v00w/scripts
#export PATH
Para visualizar las configuracion de cualquier variable de entorno se usa el comando echo seguido de por el simbolo $ mas el nombre de la variable.
#echo $PATH
/home/v00w/bin:/usr/local/bin:/usr/bin:/home/v00w/scripts:

Editando la variable de entorno
Es bueno entender como se locacionan los comandos en el sistema. La variable PATH es usada por la shell para mirar donde pueden estar. Las locaciones comunes son /bin:/usr/bin:/usr/local/bin
Entonces, cuando uno ejecuta un comando tal como ls, primero lo busca en /bin, sino /usr/bin, y asi sucesivamente buscando por todas las variables configuradas en PATH. Esto es bien util porque permite ejecutar comandos sin saber toda la ruta exacta del comando.
Se puede cambiar el PATH de cualquier usuario iniciado sesion como root, editando /etc/profile y ajustando la linea PATH=.
#vi /etc/profile
Para cambiar la información de un usuario determinado, se debe modificar:
$vi /home/v00w/.profile

El proceso init y la variable PATH
init es el proceso padre de todos los procesos del sistema. Otros procesos heredan las variables de entorno del proceso init, y el PATH es la ruta init en el raro caso que ninguna ruta haya sido configurada.
La ruta init esta arreglada en la fuente del programa init como se muestra a continuación:
usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
*Notar que la ruta init no contiene /usr/local/bin
Todos los programas que son ejecutados desde /etc/inittab funcionan en el entorno init, especialmente scripts de inicialización en /etc/init.d. Algunos ejemplos son programas como FTP, Samba

Prompt
El shel prompt puede ser configurado para mostrar información diversa. Para ver como esta configurado el prompt el sistema usa la variable de entorno PS1.
v00w@linux-fd8r:~> echo $PS1
$(ppwd \l)\u@\h:\w>
Donde v00w es el usuario, linux-fd8r es el nombre de la maquina y ~ es el pwd donde me encuentro.

Para personalizar el prompt uno puede editar /etc/bashrc como root e insertar casi cualquier texto dentro de las comillas.

Settings used to configure the Prompt
Setting Meaning
\u User name of the current user
\h The name of the computer running the shell(hostname)
\W The base of the name of the current working directory
\w The full name of the current working directory
\$ Displays "$" for normal users and "#"for the root
\! History number of the current command
\# Number of the current command
\d Current date
\t Current time
\s Name of the shell
\n New line
\\ Backslash
\[ Begins a sequence of nonprintable characters
\] Ends a sequence of nonprintable characters
\nnn The ASCII character corresponding to the octal number nnn
$(date) Output from the date command(or any other command for the matter)

HOME
La variable HOME es usada para representar el directorio personal del usuario. Este directorio es usualmente locacionado en /home/username. Asi que para el caso de mi computdora sera /home/v00w. Esta variable asi como todas las variables de entorno son uútiles con scripts. Todas las configuraciones del directorio personal para cada usuario estan contenidas en el archivo /etc/passwd.

Administrando Procesos
Cada vez que se ejecuta un comando en la shell, un proceso es creado. Cada proceso se le asigna un PID(process id number). Estos procesos se puede revisar con el comando ps, el cual realiza un reporte estatico de procesos que se estan ejecutando. El comando ps tiene varias opciones para poder mostrar las información de los procesos mas detallada.

Switches Used with ps
Switch Use
a Displays processes for all users
txx Displays processes within controlling terminal txx
u Displays user information for the process
l Displays in long format with detailed information
s Displays information in signal format
m Displays memory information
x Displays processes without a controlling terminal
S Displays CPU time and page faults of child processes

Para ver todos los procesos corriendo sobre el sistema

v00w@linux-fd8r:~> ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1064 408 ? Ss 08:02 0:00 init [5]
root 2 0.0 0.0 0 0 ? S<>top
Tasks: 141 total, 1 running, 140 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.8%us, 3.9%sy, 2.1%ni, 74.5%id, 2.6%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 3665028k total, 1241216k used, 2423812k free, 65720k buffers
Swap: 2104444k total, 0k used, 2104444k free, 628272k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4805 v00w 20 0 300m 15m 5924 S 8 0.4 3:29.52 yauap
2529 root 20 0 678m 55m 12m S 2 1.6 5:44.44 X
1 root 20 0 1064 408 348 S 0 0.0 0:00.94 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0 0.0 0:00.68 ksoftirqd/0
5 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/1
6 root 15 -5 0 0 0 S 0 0.0 0:00.58 ksoftirqd/1

Hay veces que los procesos se para o no responden como deberian y deben ser terminados. esto puede ser hecho usando el comando kill.
#kill -s [signal process]
Signal Meaning
1 Hangup
2 Terminal Interrupt
3 Termina quit
6 Process abot
9 Kill(cannot be caught or ignored)
14 Alarm Clock
15 Termination
#kill -6 2952

Una lista de todas las señales disponibles pueden ser vistas usando la opcion -l:
v00w@linux-fd8r:~> kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

Los procesos pueden correr a diferentes niveles: foreground, background, zombies, stooped. Un proceso en foreground quiere decir que ningun otro proceso puede ser ejectuado si es que el proceso que esta corriendo no termina; al inverso de background, que menciona que varios procesos se pueden estar ejecutando mientras la shell esta libre para aceptar otros procesos.
Para iniciar un proceso en background:
#firefox &
Si hay un proceso corriendo en foreground se puede parar usando la combinación de teclas ctrl+Z(^Z), una vez que el proceso ha sido parado se puede reiniciar con el comango bg [job number]. El job number puede ser descubierto con el comando jobs, este comando mostrara todos los procesos que estan actualmente corriendo en modo background o stopped.
Tambin es posible llevar procesos del background al foreground, para esto usamos el comando fg [job number].
v00w@linux-fd8r:~> firefox
*** nss-shared-helper: Shared database disabled (set NSS_USE_SHARED_DB to enable).
^Z
[1]+ Stopped firefox
v00w@linux-fd8r:~> jobs
[1]+ Stopped firefox
v00w@linux-fd8r:~> bg 1
[1]+ firefox &
v00w@linux-fd8r:~> jobs
[1]+ Running firefox &
v00w@linux-fd8r:~> fg 1
*** nss-shared-helper: Shared database disabled (set NSS_USE_SHARED_DB to enable).

Modificando Prioridad con Procesos
Cualquier proceso que se corra tiene asignado un nivel de prioridad en el sistema. La prioridad por defecto es 0(cero), las prioridades varian sobre la escala -20 a 19. Las prioridades mas altas son usadas para hacer que los procesos corrar mas despacio mientras que prioridades mas bajas hacer que corran mas rapido.
Root solo puede asignar prioridades negativas, y pueden ser revisadas con el comando top.
El nivel de prioridad puede ser asignado cuando un proceso is ejecutado usando el comando nice:
#nice [priority][command]
#nice 10 firefox
Si se quiere cambiar el nivel de prioridad de un proceso que esta corriendo o asignar prioridades de proceso a un usario, usamos el comando renice:
-g Specifies the priority for processes executed by members of the specified group
-u, --user Specifies the priority level for the processes executed by the specified user
-p, --pid Specifies the priotity level for the specified process
-v, --version Print version.
-h, --help Print help.
v00w@linux-fd8r:~>firefox &
v00w@linux-fd8r:~> ps -a |grep firefox
7789 pts/1 00:00:25 firefox
v00w@linux-fd8r:~> renice 15 -p 7789
7789: old priority 10, new priority 15

Resumen de capitulo
  1. El shell usado por defecto sobre los sistemas Linux es el shell bashEste shell puede ser cambiado por el usuario. Sin embargo, scripts especificos deben ser escritos para la shell donde se va a correr; por lo tanto, cambiar shells deberia hacerse con cuidado.
  2. El shell bash permite comandos usando punto y coma ";". Además, los comandos pueden realizarse en diferentes lineas usando backslah "\"
  3. Los comandos se autocompletan pulsando la tecla TAB.
  4. El Readline Library permite editar comandos en la linea de comando usando el editor emacs.
  5. La substitución de comando(command sustitution) es usado para remplazar un comando con su salida.
  6. El historial de comando está almacenado en el archivo ~/.bash_history. El número de entradas almacenadas esta configurado por la variable HISTSIZE. Este archivo permite ver y editar comandos previamente ingresados.
  7. El comando fc permite editar entradas en el historial con el editor por defecto. Múltiples entradas pueden ser editadas al mismo tiempo.
  8. Las variables de entorno y configuraciones en los archivos /etc/profile y /etc/bash.bashrc configuran parámetros para el sistema entero. Si se desea configurar las variables para un usuario especifico, se editan los archivos ~/.profile y ~/.bashrc.
  9. La variable PATH contiene una lista de directorios para buscar comandos que son ingresados por la linea de comandos.
  10. La variable init path es usado por programas que se incian desde archivo /etc/initab.
  11. El shell prompt puede ser configurado para mostrar una variedad de información como el pwd, hostname, user name, etc.
  12. La variable HOME guarda el directorio personal del usuario. Esta variable es útil con scripts.
  13. El comando ps provee una muestra estática del estado de los procesos del sistema.
  14. El comando top provee información en tiempo real de los procesos.
  15. El comando kill es usado para finalizar procesos.
  16. Los procesos pueden ser ejecutado en background usando el simbolo & al final de la sentencia, o usando bg [jobnumber].
  17. Los procesos en foreground pueden ser interrumpidos usando ^Z(CRTL+Z).
  18. Los procesos pueden ser movidos al foreground usando el comando fg [jobnumber]
  19. El comando nice es usado para configurar la prioridad del proceso cuando es iniciado.
  20. El comando renice es usado para cambiar la prioridad de un proceso que actualmente esta siendo ejecutado en el sistema.