comandos unix basicos

14
¿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.

Upload: saul-morales

Post on 31-Jan-2016

260 views

Category:

Documents


0 download

DESCRIPTION

Algunos comandos basicos de unix que seran de gran ayuda para los que inician

TRANSCRIPT

Page 1: Comandos UNIX basicos

¿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

Page 2: Comandos UNIX basicos

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

Page 3: Comandos UNIX basicos

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

Page 4: Comandos UNIX basicos

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.

Page 5: Comandos UNIX basicos

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

Page 6: Comandos UNIX basicos

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:

Page 7: Comandos UNIX basicos

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.

Page 8: Comandos UNIX basicos

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%

Page 9: Comandos UNIX basicos

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

Page 10: Comandos UNIX basicos
Page 11: Comandos UNIX basicos

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.