comandos unix basicos
DESCRIPTION
Algunos comandos basicos de unix que seran de gran ayuda para los que inicianTRANSCRIPT
¿Contar las líneas de un archivo?
Con el comando wc –parámetro fichero.
Parámetros:
-l cuenta las líneas de un archivo
-w cuenta las palabras de un archivo.
-c cuenta los caracteres de un archivo.
¿Cuántos parámetros puede recibir un script Shell?
R= Posicionales puede recibir muchos con el símbolo $, en el Shell bourne puede recibir solo del 0-9.
TOP:
Primera linea: Muestra una serie de datos referidos al sistema.
“02:51:37″: Es la hora actual de este caso “up 59 min”: Es el tiempo en minutos que el sistema esta corriendo en este caso “2 users”: Cantidad de usuarios conectados en ese momento “Load average”: Los numeros indican el estado de uso del CPU. Si los numeros son
menores a “1” esto quiere decir que el CPU no tiene que esperar para poder ejecutar una instruccion. Si esta por encima de “1” quiere decir que es necesario que el CPU necesite esperar para ejecutar una instruccion. Los tres numeros muestran el average cada 5, 10 y 15 minutos respectivamente.
Segunda linea:
Muestra el total de procesos corriendo y los divide por estados, “Running”, “Slepping”, “Stopped”, “Zombie”.
Tercera linea:
Muestra el uso de CPU en ese momento.
“%us”: muestra el uso de cpu del usuario “%sy”: muestra el uso de cpu del sistema. “%id”: muestra el uso de cpu disponible para utilizar. “%wa”: muestra en porcentaje el tiempo en espera del cpu para manejo de I/O.
Cuarta linea:
Muestra valores referentes a la memoria física del equipo (los valores pueden ser algo engañosos).
Total: Es el valor total de la memoria física
Used: Es el valor de la memoria utilizada
Free: Es el valor de la memoria libre
Buffered: Es el valor de memoria fisica que esta en el buffer de memoria.
Quinta linea:
Muestra valores referentes al uso de la memoria SWAP. Es similar a la cuarta linea en cuanto a los datos que proporciona salvo por un solo cambio que al final de la linea muestra la memoria que esta cacheada.
Calcular el espacio libre en memoria?
Memoria RAM disponible = Cached(12964k) + Buffered(153762k)
Calcular el espacio utilizado en memoria?
Memoria RAM utilizada por programas = Used (1942256) – (Cached(12964k) + Buffered(153762k))
PID: Process ID del proceso USER: Usuario que esta corriendo dicha aplicacion PR: Prioridad del proceso NI: Valor por el cual se establece una prioridad para el proceso VIRT: Total de la memoria virtual usada RES: Resident task size SHR: Estado del proceso. S (sleeping), D (uninterruptible sleep), R (running), Z(zombies), or
T (stopped or traced) %CPU, %MEM: Porcentajes de memoria y cpu utilizados en ese momento Time: El tiempo de uso del procesador para ese proceso Command: El comando que esta siendo ejecutado por el Daemon
Dentro del programa podemos interactuar con el con varias opciones:
k -> Si se quiere matar el proceso, luego debemos ingresar el numero de su PID. r -> Cambia la prioridad del proceso (upercase) -> Muestra las posibles columnas que podemos agregar a la lista de procesos 1 -> Muestra la información de todos los cores z o b -> Agregan colores a la interfaz c -> Muestra el path absoluto del binario que se esta ejecutando. n -> nos permite reducir la lista a “n” procesos. N (upercase) -> Ordena los procesos por PID A (upercase) -> Ordena los procesos por aparicion, primero se encuentran los mas nuevos P (upercase) -> Ordena los procesos por uso de CPU, esta opcion es la default M (upercase) -> Ordena los procesos por memoria residente T (upercase) -> Ordena los procesos por tiempo. W (upercase) -> Guarda la configuracion que hicimos q -> Salir de Top
top -u usuario -> Muestra los procesos que estan corriendo con ese usuario y sus valores
top -p PID -> muestra el proceso seleccionado y sus valores
top -n numero -> Numero es la cantidad de iteraciones que va a tener el comando y luego se cerrara
top -d numero -> “Numero” es el tiempop en segundos que va a esperar el comando para refrescar la lista.
top -b -> Batch mode, ideal para mandar resultados desde top a otros programas
~ Significa que estas en directorio home.
HARD LINK AND SOFT LINK
La manera más sencilla de comprender que es un enlace simbólico en Linux es compararlo con el “enlace directo” o “shortcut” en Windows. El fichero o directorio se encuentra en un único punto del disco y los enlaces son unpuntero contra él. Cada enlace simbólico tiene su propio número de inodo lo que permite hacer enlaces simbólicos entre distintos sistemas de ficheros.Para crear enlaces (tanto simbólicos como duros) usamos el comando ln. En este caso vamos a crear un enlace simbólico (parámetro -s) del fichero test:
$ ln -s test enlace-a-test
lrwxrwxrwx 1 alex alex 4 2011-04-27 18:59 enlace-a-test -> test
Para confirmar que el enlace simbólico tiene un inodo distinto usamos el comando stat:
$ stat test
File: «test» Size: 0 Blocks: 0 IO Block: 4096 archivo regular vacíoDevice: 804h/2052d Inode: 73793 Links: 1Access: (0644/-rw-r--r--) Uid: ( 1000/ alex) Gid: ( 1000/ alex)Access: 2011-04-27 18:58:53.124142406 +0200Modify: 2011-04-27 18:58:53.124142406 +0200Change: 2011-04-27 18:58:53.124142406 +0200
$ stat enlace-a-test File: «enlace-a-test» -> «test» Size: 4 Blocks: 0 IO Block: 4096 vínculo simbólicoDevice: 804h/2052d Inode: 77212 Links: 1Access: (0777/lrwxrwxrwx) Uid: ( 1000/ alex) Gid: ( 1000/ alex)Access: 2011-04-27 18:59:07.812139890 +0200Modify: 2011-04-27 18:59:06.460112888 +0200Change: 2011-04-27 18:59:06.460112888 +0200
Los enlaces duros lo que hacen es asociar dos o más ficheros compartiendo el mismo inodo. Esto
hace que cada enlace duro es una copia exacta del resto de ficheros asociados, tanto de datos
como de permisos, propietario, etc. Esto implica también que cuando se realicen cambios en uno
de los enlaces o en el fichero este también se realizará en el resto de enlaces.
Los enlaces duros no pueden hacerse contra directorios y tampoco fuera del propio sistema de
ficheros.Vamos a crear un hard link contra el fichero “test” de antes y veremos que efectivamente comparten inodo y que los datos se sincronizan entre ambos:
$ ln test enlace-duro-test$ ls -li73793 -rw-r--r-- 2 alex alex 5 2011-04-27 19:09 enlace-duro-test73793 -rw-r--r-- 2 alex alex 5 2011-04-27 19:09 test
En la primera columna verificamos que tienen el mismo número de inodo y en la tercera se
especifica cuando enlaces duros tiene el fichero. Si hacéis cambios en uno de ellos veréis que
también se hacen en el resto. Si por ejemplo cambiamos los permisos al fichero test:
$ chmod 0755 test$ ls -li73793 -rwxr-xr-x 2 alex alex 5 2011-04-27 19:09 enlace-duro-test73793 -rwxr-xr-x 2 alex alex 5 2011-04-27 19:09 test
Y finalmente el stat de cada uno verifica todo lo que comentamos:$ stat test File: «test» Size: 5 Blocks: 8 IO Block: 4096 archivo regularDevice: 804h/2052d Inode: 73793 Links: 2Access: (0755/-rwxr-xr-x) Uid: ( 1000/ alex) Gid: ( 1000/ alex)Access: 2011-04-27 19:09:51.528132995 +0200Modify: 2011-04-27 19:09:53.640114896 +0200Change: 2011-04-27 19:11:42.516138726 +0200
$ stat enlace-duro-test File: «enlace-duro-test» Size: 5 Blocks: 8 IO Block: 4096 archivo regularDevice: 804h/2052d Inode: 73793 Links: 2Access: (0755/-rwxr-xr-x) Uid: ( 1000/ alex) Gid: ( 1000/ alex)Access: 2011-04-27 19:09:51.528132995 +0200Modify: 2011-04-27 19:09:53.640114896 +0200Change: 2011-04-27 19:11:42.516138726 +0200
Diferencias entre soft y hard linksLos enlaces simbólicos se pueden hacer con ficheros y directorios mientras que los duros solo entre ficheros.
Los enlaces simbólicos se pueden hacer entre distintos sistemas de ficheros, los duros no.Los enlaces duros comparten el número de inodo, los simbólicos no.En los enlaces simbólicos si se borra el fichero o directorio original, la información se pierde, en los duros no.Los enlaces duros son copias exactas del fichero mientras que los simbólicos son meros punteros o “accesos directos”.
AGREGAR PATH
Una de las variables más importantes de Linux es PATH, la cual determina los directorios donde la shell busca los ficheros binarios (los ejecutables en terminología Windows) de los comandos para no tener que teclearlos con su ruta completa. Al hilo del anterior post, resulta que en Debian Wheezy no figura el directorio /sbin en la variable PATH, por lo que todos los comandos contenidos ahí, entre los que están los relativos a los módulos del kernel comomodinfo, modprobe o rmmod, no se ejecutan automáticamente cuando los tecleamos en la terminal y pulsamos enter. Para que esto sea así tenemos que añadir el susodicho directorio /sbin a la variable PATH. Procedamos.
Primero veamos los directorios que ya están incluidos en la variable PATH. Lo hacemos anteponiendo el símbolo del dólar ( $ ) a PATH:
paco@paco-pc:~$ $PATHbash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games: No existe el fichero o el directoriopaco@paco-pc:~$
También podemos verlo usando el comando echo:
paco@paco-pc:~$ echo $PATHbash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/gamespaco@paco-pc:~$
Bien, estos son los directorios que la variable PATH trae por defecto, separados por dos puntos:
/usr/local/bin/usr/bin/bin/usr/local/games/usr/games
Ahora añadiremos el directorio /sbin a la variable PATH usando el comandoexport:
paco@paco-pc:~$ sudo export PATH=$PATH:/sbinpaco@paco-pc:~$
Ya está añadido. Lo podemos ver si volvemos a listar la variable PATH:
paco@paco-pc:~$ echo $PATHbash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games:/sbinpaco@paco-pc:~$
Ocurre que este cambio es temporal y dejará de tener efecto en cuanto cerremos la sesión. Si queremos que el cambio sea permanente tenemos varias opciones. Podemos editar el archivo ~/.bashrc (recordemos que el carácter ~equivale a /home/usuario, que el punto en primer lugar significa archivo oculto y que estamos hablando de la shell bash), el archivo ~/bash_profile, o el~.profile en caso de que el anterior no exista y añadirle la siguiente línea:
PATH="$PATH:/sbin"
Si lo queremos hacer directamente desde el terminal sin abrir ningún editor de textos, usaremos el comando echo para definir la línea que queremos trasladar al archivo ~/.bashrc:
paco@paco-pc:~$ echo "export PATH=$PATH:/sbin" >> ~/.bashrcpaco@paco-pc:~$
Empleando los caracteres redireccionadores >> hemos añadido la línea entrecomillada al final del archivo ~/.bashrc (mucho ojito, que si solo ponemos un redireccionador sobreescribiremos el archivo). Terminamos aplicando el comando source para recargar el archivo ~/.bashrc:
paco@paco-pc:~$ source ~/.bashrcpaco@paco-pc:~$
Otra manera de hacerlo es estableciendo la variable y luego incorporándola con el comando export, todo en la misma línea:
paco@paco-pc:~$ PATH=/sbin:$PATH ; export PATHpaco@paco-pc:~$
¿Qué es la memoria virtual?Si el equipo no tiene suficiente memoria de acceso aleatorio (RAM) para ejecutar un
programa o una operación, Windows usa la memoria virtual para compensar la falta.
Para conocer la cantidad de RAM del equipo, consulte Averiguar cuánta RAM tiene
el equipo.
La memoria virtual combina la RAM del equipo con espacio temporal en el disco duro.
Cuando queda poca RAM, la memoria virtual mueve datos de la RAM a un espacio
llamado archivo de paginación. Al mover datos al archivo de paginación y desde él, se
libera RAM para que el equipo pueda completar la tarea.
Cuanto mayor sea la RAM del equipo, más rápido tenderán a ejecutarse los programas.
Si el equipo se ralentiza porque falta RAM, puede considerar la posibilidad de aumentar
la memoria virtual para compensar. Sin embargo, el equipo puede leer los datos de la
RAM mucho más rápido que de un disco duro, por lo que la mejor solución es agregar
RAM.
MEMORIA SWAP
La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria
virtual, que permite hacer creer a los programas que tienen más memoria que la disponible
realmente. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no
podrán ser ubicados en la memoria RAM.
En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar
un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar
la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído
de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea
necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es
un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión
de que hay más memoria disponible.
En realidad, puede ser que no toda la imagen del proceso se lleve al disco. De esta forma, se
mantienen algunas partes en memoria principal, mientras que otras permanecen en el
almacenamiento secundario.
Si los algoritmos utilizados en el intercambio de páginas están mal diseñados o hay poca
memoria disponible, se puede dar un problema conocido como hiperpaginación, o en
inglés thrashing. Los síntomas son un atasco y sobrecarga en el sistema, y la causa es que
los procesos continuamente están siendo pasados de memoria física a área de intercambio
(porque hace falta memoria para correr otro proceso) y luego otra vez a memoria (porque han
de ejecutarse).
En los sistemas operativos se puede usar como área de intercambio un fichero o
una partición (los dos son en realidad parte de un disco duro o almacenamiento secundario).
Fichero de intercambio[editar]
Un fichero en blanco puede prepararse para ser usado como área de intercambio. Esto tiene
una gran ventaja:
es fácil de crear, borrar, ampliar o reducir, según se crea necesario (a diferencia de una
partición)
Pero también alguna desventaja:
le afecta la fragmentación, ya que se encuentra dentro de un sistema de ficheros
El problema de la fragmentación no es grave, ya que el espacio de intercambio no siempre es
accedido de forma secuencial, sino directa (en oposición a la secuencial).
Partición de intercambio[editar]
También se puede dedicar una partición entera del disco duro (o el disco completo) como área
de intercambio. Ventajas:
se puede conseguir mejor rendimiento si se coloca la partición en la zona más rápida del
disco, que es al principio (los cilindros exteriores del disco, por donde pasan más datos a
cada vuelta;
no hay problemas de fragmentación
no hay que usar ningún sistema de ficheros en concreto
Tiene pocas desventajas:
crear una partición es un proceso algo difícil; de todas formas, si se elige bien el tamaño
de la partición, no hará falta ningún cambio en el futuro
la partición siempre ocupará el mismo espacio, aunque no se esté usando al 100%
VOLUMEN
En sistemas operativos, el término volumen hace referencia a una única área accesible de almacenamiento, como ser una partición de un disco duro.
Un volumen no es una partición porque, por ejemplo, un disquete puede ser accedido como un volumen, pero no necesariamente puede contener una partición. También un sistema operativo puede reconocer una partición sin haber reconocido un volumen asociado a esta, y esto puede suceder porque el sistema operativo no reconoce el sistema de archivos que utiliza esa partición. En definitiva, los volúmenes existen a nivel lógico en el sistema operativo, en cambio, las particiones existen a nivel físico en un medio de almacenamiento. Por lo general hay una correspondencia uno a uno, pero no siempre.
COMANDO MOUNT
mount es un comando de sistemas basados en Unix que se utiliza para montar dispositivos y particiones para su uso por el sistema operativo. Montar es hacer que el sistema operativo proyecte el contenido de ese dispositivo o partición en un enlace lógico (un directorio). Cuando se desocupa se rompe el enlace y se sigue trabajando con los mismos archivos básicos.
Uso
mount [-t <tipo>] [-o <opciones>] <dispositivo> <punto_de_lectura> mount -t iso9660 /dev/hdb0 /mnt/cdrommount -t iso9660 -o loop /home/usuario/imagen.iso /mnt/imagenes
PAGINACION
PROCESO PADRE Y PROCESO HUERFANO.
En sistemas operativos basados en UNIX, un proceso zombie (también llamado proceso difunto), es un proceso que ha completado su ejecución, pero que todavía tiene una entrada en la tabla de procesos.
Esta entrada todavía se necesita para permitir al proceso que inició el proceso (ahora zombie) pueda leer su estado de salida. El comando kill no tiene efecto sobre un proceso zombie.
Cuando un proceso finaliza, toda la memoria y recursos asociados con este son desasignados para que puedan ser usados por otros procesos. De todas maneras, la entrada del proceso permanece en la tabla de procesos. El proceso padre puede leer el estado de salida del proceso hijo ejecutando la llamada del sistema wait. Luego el estado de zombie es eliminado.
Después de que el zombie es eliminado, el ID del proceso y la entrada en la tabla de procesos pueden ser reusados. De todas maneras, si un proceso padre falla en llamar un wait, el zombie permanecerá en la tabla de procesos (en ciertas situaciones esto puede ser deseable, por ejemplo, en el caso de que el padre cree otro hijo para asegurar que no será localizado en el mismo ID de proceso).
Un proceso zombie no es lo mismo que un proceso huérfano. Este último es un proceso que permanece en ejecución, pero su padre ha muerto.
Los procesos zombies son identificados en la salida del comando "ps" con la presencia la la letra Z en la columna STAT.