Administración (Parte II) | ||||||||||||
Una shell es un programa que interpreta los comandos que el usuario el
usuario tipea y los transforma en intrucciones para el sistema operativo
en
cuestion. Una shell es solo eso, una interface que permite al usuario
interaccionar con el sistema operativo, al igual que el sistema X-Window,
el
cual permite al usuario ejecutar commandos mediante el mouse y el teclado.
Hay varios tipos de shell, entre las mas populares, estan la Bourne
shell (sh), Korn shell (ksh), C shell (csh), Secure Shell (SSH). Como
siempre
es necesario aclarar que ninguna es mejor o peor que otra, sin embargo la
documentacion existente sobre la Bourne Shell es, sin lugar a duda la mas
numerosa. Ver /etc/shells para ver tipo y path de cada una de las shells
disponibles en tu sistema.
1- Que estés tipeando el nombre incorrecto del binario
ejecutable de tu programa (recorda que es case sensitive o sea
que las
mayúsculas y minúsculas cuentan)
2- Que el directorio el donde se encuentra el binario ejecutable de tu
programa NO este en PATH, los
binarios de un programa se encuentran en /usr/bin /bin /usr/local/bin, etc
para
saber si estos directorios se encuentran en tu PATH tipea echo $PATH vas a
ver una lista de directorios, si por ejemplo /usr/local/bin no esta en esa
lista tipea export
PATH='/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/local/sbin:/usr/games:/usr/X11R6/bin'
Ver punto siguiente. Si el binario a ejecutar (ejemplo: BitchX) se
encuentra en un directorio
no estándar, tal como /home/fulanito/programas entonces hacé: cd
/home/fulanito/programas y luego ./bitchx
Cuando ejecutamos un programa se dice que este se ejecuta en un
determinado
"ambiente" y ese "ambiente" esta definido por el proceso que llama a dicho
programa. Las "variables de ambiente" almacenan información sobre tu
directorio
cuando te logueas, username, tipo de shell, tipo de terminal y otra
información
opcional que el usuario puede definir. Estas variables pueden ser
configuradas
de manera muy simple por el usuario, en este FAQ se ejemplifican las
variables
mas usadas, para obtener una lista completa de todas las variables de
ambiente
man bash y para ver la configuracion completa tipea
printenv
PATH mencionada anteriormente, sintaxis
export PATH='/usr/local/bin'
EDITOR sintaxis export EDITOR=vi
MAIL sintaxis export MAIL=/var/spool/mail/serena
DISPLAY sintaxis export DISPLAY=hostname:0.0
Cuando bash es invocado, como shell interactiva, lo primero que hace es
leer
y ejecutar los comandos localizados en el archivo /etc/profile luego de
leer
este archivo, busca los ficheros ~/.bash_profile, ~/.bash_login y
~/.profile
en este orden, leyendo y ejecutando solo el primero que encuentre. De
esta manera podemos agregar las variables de ambiente en ~/.bash_profile
por
ejemplo para que de esta manera, cada vez que nos logueemos en el sistema
e
invoquemos bash, este leea nuestras variables localizadas en este archivo.
Diferencias entre ~/.bash_profile y ~/.bashrc: Los archivos
~/.bash_profile, ~/.bash_login o ~/.profile (recordá que sólo uno de
estos
archivos es leído) sólo se ejecuta cuando nos logueamos (login shells),
mientras que ~/.bashrc (non-login shells) es leído sólo cuando ya estamos
logueados.
Aliasing: Seguramente te habrás preguntado alguna vez: "por qué tengo
que
tipear mount -t vfat /dev/fd0 /mnt cada vez que tengo que montar un
floppy,
quisiera tener una forma más fácil sin escribir ese comando tan largo...
Podemos editar el archivo ~/.bashrc agregando "aliases" que no son más que
abrebviaciones usadas para facilitar al usuario sus tareas
administrativas.
Como último paso en la secuencia de booteo del kernel se inicia un
proceso
denominado init (PID1), init es conocido como el padre de todos los
procesos dado que su principal función es crear y controlar procesos.
Cada
vez que un proceso hijo termina init guarda las razones por las que dicho
proceso terminó en /var/run/utmp y /var/log/wtmp Init lee el archivo
/etc/inittab
Este archivo varía en las diferentes distribuciones, no osbtante, estos
son los puntos
principales que uno debe comprender:
En una operación normal init se asegura que getty esté
funcionando normalmente para que los usuarios puedan loguearse en el
sistema.
Single user mode: Algunas tareas adminitrativas requieren este runlevel
Ej.
correr fsck en una particion /usr o recuperar la cuenta root. Para bootear
desde single user mode en el prompt de lilo tenés que tipear: linux
-s
Boot scripts
El kernel así como varios programas almacenan errores, warnings y otros tipos de mensajes en el directorio /var/log Clasificación de logs por orden de importancia: EMERG el sistema es inutilizable ALERT debe tomarse una acción ya! CRIT condición crítica ERR condición de error WARNING advertencia NOTICE condición normal pero significante INFO informacional DEBUG debug El archivo /etc/syslog.conf contiene la configuración de syslogd, si vas a editarlo, recordá usar TABs en lugar de espacios. Cron es el daemon que ejecuta tareas administrativas establecidas periódicamente, la sintaxis para agregar tareas es la siguiente: "minuto" "hora" "día del mes" "mes" "día de la semana" "comandos" Por ejemplo, si se desea borrar los archivos viejos del directorio /tmp se puede agregar ejecutá el comando crontab -e y agregá la línea: 0 9 1 * * find /tmp -atime 3 -exec rm -f {} \; # Se ejecutará el primer día de cada mes a las 9AM at: A diferencia de cron, at se encarga de realizar tareas pre establecidas pero a diferencia de cron no es periódico sino que ejecuta una tarea sólo una vez, ejemplo: brocoli:/home/serena# at 6pm october 7 at> /usr/share/sounds/remind.wav at> CTRL + D (para salir del prompt) job 2 at 1999-10-07 18:00 Con el comando killall nombre_del_programa matás todos los procesos pertenecientes a dicho programa. Tipea kill -9 numero_de_pid (mas informacion: man kill) Es un proceso que no ocupa memoria, ni CPU, ni IO ni disco. Lo único que ocupan es un "slot" en la tabla de procesos. Dado que el kernel tiene un limite para el número de procesos simultáneos (esten o no ocupando CPU), el tener procesos zombies puede llegar a ser un problema. Cuando un proceso está siendo ejecutado, linux abre 3 archivos para dicho proceso, a saber:
Un archivo core es creado por la mayoría de los programas cuando sufren un "crash" Contienen información destinada a reparar el problema. Normalmente el programa (debugger) utilizado para leer estos archivos core es el gdb que analiza que programa creo este archivo core y los motivos del crash. Los archivos core pueden ser removidos si no se desea analizar esta información. Una manera de prevenir la aparición de archivos core es la siguiente: en ~/.bash_profile agregá ulimit -c 0
Para chequear el estado de la memoria libre y usada utilizá los comandos free, memstat, top y/o cat /proc/meminfo |
Trademarks are owned by their owners.
Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk.
Copyright © 1998, 1999 by Brocoli & $erena. This document may be distributed only subject to the terms and conditions set forth in the LDP license.