La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 11: Manipulación de PROCESOS en LINUX, Introducción.

Presentaciones similares


Presentación del tema: "2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 11: Manipulación de PROCESOS en LINUX, Introducción."— Transcripción de la presentación:

1 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 11: Manipulación de PROCESOS en LINUX, Introducción a AWK Nombre unidad de aprendizaje: Programación avanzada de SCRIPTS Programación Aplicada

2 2© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Objetivos  Objetivos de la clase  Construye rutinas scripting Web de monitoreo de proceso y eventos.  Construye rutinas scripting para el análisis de LOG.  Construye rutinas scripting Web de monitoreo de proceso y eventos.

3 3© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Cuando emplea un comando para ejecutar un programa, el intérprete de comandos espera casi siempre a que el programa termine antes de pedirle que use otro comando. Sin embargo, podría ejecutar el comando para arrancar el programa, esperar a que éste comenzase y después pasar al comando siguiente de inmediato. Para lograr esto, se teclea un carácter “&” al final del comando.

4 4© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Cuando el intérprete de comandos espera a que un programa termine antes de solicitar que se ejecute un comando nuevo, se dice que el proceso está ejecutándose en el PLANO PRINCIPAL. Cuando el intérprete arranca un programa y después deja que se ejecute por sí solo, se dice que el proceso está ejecutándose en el PLANO SECUNDARIO (o ejecutándose en “BACKGROUND”).

5 5© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Un programa se vuelve candidato para ejecutarse en el PLANO SECUNDARIO en caso de que NO necesite correr interactivamente, esto es, si no es necesario que lea desde el teclado o que escriba en la pantalla.

6 6© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Por ejemplo, suponga que un usuario quiere ejecutar un programa que lee una gran cantidad de datos de un archivo, los ordena y después escribe la salida en otro archivo. No hay razón para que este programa no pueda trabajar por sí solo sin la intervención del usuario, así es que debería usar: sort resultado&.

7 7© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Ejecutar el comando: ls>temp&, hará que el comando ls se ejecute en el PLANO SECUNDARIO y que la salida estándar se redireccione hacia un archivo llamado temp.  Al lanzar el PROCESO, nos aparece por pantalla algo parecido a: [1] 2035, donde: [1] es el número de trabajo de ese usuario y 2035 es el número de PROCESO o PID.

8 8© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Cuando lanzamos un PROCESO en SEGUNDO PLANO obtenemos un PID y un número de trabajo. El PID, como ya hemos mencionado, es el número de PROCESO y es el método que utiliza el sistema operativo para identificar de forma única al PROCESO. En cambio el número de trabajo es un identificador de uno o varios procesos correspondientes a un usuario.

9 9© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Anteriormente vimos que + detiene (suspende) un PROCESO y lo deja en SEGUNDO PLANO. También vimos como podíamos enviarle un señal para que continuara su ejecución en SEGUNDO PLANO. Ahora lo que vamos ver son los mecanismos para realizar una gestión más completa de esos trabajos, a través de los comandos fg y bg.

10 10© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  La orden fg se utiliza para traer a PRIMER PLANO un trabajo que está en SEGUNDO PLANO, bien esté activo o bien esté detenido.  La orden fg se usa como: fg [%num_trabajo].  Hasta ahora hemos alternado entre un PROCESO detenido y un PROCESO en primer plano, y podíamos hacer que continuara enviándole una señal.

11 11© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Tenemos otra forma para hacer que un PROCESO detenido en segundo plano continúe su ejecución.  La orden bg se utiliza para poner en ejecución en segundo plano un trabajo que está en segundo plano detenido y se utiliza como: bg [%num_trabajo].

12 12© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Con la orden jobs podemos obtener una lista de los trabajos que hemos “lanzado” en el sistema. La orden jobs se utiliza como: jobs, y al usarla nos aparece algo como: [alumno@localhost ~]$ jobs [1] Running sleep 100 & [2] Running sleep 101 & [3]- Running sleep 102 & [4]+ Running sleep 103 &

13 13© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Donde entre corchetes tenemos el número de trabajo, y los signos “+” y “-” indican que el trabajo es el primero de la lista (+) y que el trabajo es el segundo de la lista (-), respectivamente.

14 14© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  La orden nohup lanza un proceso y lo independiza del terminal que estamos usando.  Los PROCESOS se organizan de forma jerárquica, de forma que si abandonamos la SHELL que nos conectó al sistema (abandonamos la sesión de trabajo) automáticamente se matarán todos los PROCESOS que dependan de ella.

15 15© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Ejecutar PROCESOS en PRIMER y SEGUNDO PLANO  Pero en muchas ocasiones nos puede interesar lanzar un PROCESO y dejarlo en ejecución aun cuando hayamos cerrado la sesión de trabajo. Para esto se usa la orden nohup, que presenta la siguiente sintaxis: nohup orden [argumentos].

16 16© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Cambiar prioridad a los PROCESOS  Todos los PROCESOS en GNU/LINUX tienen una PRIORIDAD.  Esta PRIORIDAD permite ubicarlos en la cola de procesos listos para que sean atendidos por la CPU.  El rango de prioridades va de -20 a 19, siendo -20 la PRIORIDAD máxima.

17 17© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Cambiar prioridad a los PROCESOS  Por defecto, la PRIORIDAD con que se ejecutan los PROCESOS es 0.  Para “lanzar” un PROCESO con una determinada PRIORIDAD utilizamos el comando nice. Si queremos cambiar la PRIORIDAD de un PROCESO en ejecución utilizaremos el comando renice.

18 18© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Cambiar prioridad a los PROCESOS  Sólo el usuario root puede utilizar el rango de prioridades negativas, así el sistema se asegura que root siempre pueda ejecutar PROCESOS más rápidamente que el resto de los usuarios.  Un aspecto a considerar es que no podemos medir directamente el tiempo de ejecución de un PROCESO, ya que éstos se van alternando en la cola de ejecución hasta que terminan; no se ejecutan todos de una sola vez.

19 19© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Cambiar prioridad a los PROCESOS  Para medir el tiempo de ejecución real de un PROCESO podemos “lanzarlo” añadiendo antes del comando la palabra time.

20 20© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PROCESOS, sus propietarios y sus permisos  En los sistemas operativos GNU/LINUX, los PROCESOS pertenecen al usuario que los “lanzó”. Asimismo, se ejecutan con los mismos permisos que tiene ese usuario.  Esta es una medida de seguridad bastante importante, ya que así otros usuarios no podrán terminar procesos que no les pertenezcan.

21 21© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PROCESOS, sus propietarios y sus permisos  Asimismo, un PROCESO presuntamente maligno lanzado por un usuario, no afectaría al sistema ni a otros usuarios, ya que el usuario que lo lanzó no tiene los permisos necesarios para “afectar” el sistema.  Esta es una de las razones por la que existen realmente pocos virus efectivos en los sistemas operativos basados en UNIX/LINUX.

22 22© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Los PROCESOS, sus propietarios y sus permisos  Un virus no es más que un proceso lanzado por el usuario infectado, y como tal, sólo tiene los permisos que pueda tener el usuario, así que no comprometería la seguridad del sistema ni a otros usuarios.

23 23© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Introducción a AWK  AWK es un lenguaje de programación que permite la búsqueda y procesamiento de patrones de texto en archivos o flujos de datos.  AWK procesa patrones tal como lo hace GREP.  El nombre AWK deriva de los apellidos de los autores del lenguaje: Alfred Aho, Peter Weinberger y Brian Kernighan.

24 24© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Introducción a AWK  La versión original de AWK fue escrita en 1977 en los laboratorios de AT&T. En 1985 una nueva versión hizo al lenguaje de programación AWK más potente, introduciendo algunas nuevas características.  La implementación GNU de AWK, llamada GAWK, fue escrita en 1986 por Paul Rubin y Jay Fenlason, con consejos de Richard Stallman. John Woods también participó del desarrollo de GAWK.

25 25© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Introducción a AWK  En 1988 y 1989, David Trueman junto con Arnold Robbins, introdujeron los cambios necesarios para hacer GAWK compatible con el nuevo AWK.  GAWK es también compatible con la especificación POSIX del lenguaje AWK.

26 26© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Introducción a AWK  AWK hereda características sintácticas de los lenguajes de shell scripting (como el BASH), de programas como GREP y SED, y del lenguaje C.  AWK incorpora su propio lenguaje de programación, siendo capaz de ofrecer operaciones aritméticas, relaciones lógicas, manipulación de variables, control del flujo, procesamiento de archivos, entre otras posibilidades.

27 27© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Uso básico de AWK  La sintaxis de uso de AWK es:  prog_awk especifica el nombre de un programa escrito en AWK.  caracter especifica un caracter para ser usado como delimitador de campo del archivo. awk [-f prog_awk] [-Fcaracter] [′programa′] [variable=valor…] [archivo]

28 28© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Uso básico de AWK  variable=valor se utiliza para establecer los valores que tomarán las variables que utilizará el programa.  archivo especifica el archivo que será procesado por AWK; las instrucciones o programas AWK de la orden actuarán sobre este archivo.

29 29© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Uso básico de AWK  Veamos algunos ejemplos de uso de AWK:  Para imprimir en pantalla todas las líneas del archivo arch que contengan la palabra “hola”.  Para mostrar en pantalla todas las líneas del archivo arch de largo mayor que 10 (más de 10 caracteres). [alumno@localhost ~]$ awk ′/hola/ {print $0}′ arch

30 30© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Uso básico de AWK  Para imprimir en pantalla el segundo campo del archivo arch, suponiendo que arch es un archivo con campos delimitados por “:”. [alumno@localhost ~]$ awk ′length > 10′ arch [alumno@localhost ~]$ awk -F : ′{ print $2}′ arch

31 31© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Podemos considerar que cada línea de un archivo es un “registro”, que cada uno de estos “registros” se compone de varios “campos” delimitados (o separados) por algún caracter delimitador, como por ejemplo un “*”, “:”, “#”, etc.  AWK usa $0 para identificar la línea completa del archivo (registro), $1 para el primer campo, $2 para el segundo campo,…

32 32© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Para imprimir en pantalla el campo 1 y el campo 3 del archivo arch, que es un archivo delimitado con “#”, usaremos: awk -F # ′{print $1”\t”$3} ′ arch.  Para imprimir todos los registros del archivo arch cuyo apellido (campo 2) sea “Perez”, usaremos: awk -F # ′$2 == “Perez” {print $0}′ arch.

33 33© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Para imprimir en pantalla todos los registros del archivo arch que contengan en el apellido (campo 2 ) la palabra “var”, usaremos: awk -F # ′$2 ~ /var/ {print $0}′ arch.  “~” debe interpretarse como “contiene a” y “!~” se interpreta como “no contiene a”.

34 34© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Veamos algunas variables predefinidas en AWK relacionadas con archivos de registros:  FS – Separador de campos (Field Separator), contiene el carácter que indica a AWK en qué punto del registro acaba un campo y empieza el siguiente. Por omisión es un espacio. Se puede indicar un carácter alternativo mediante una instrucción de asignación como BEGIN {FS=“caracter”}.

35 35© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  RS – Separador de registros (Record Separator), contiene el carácter que indica a AWK en qué punto del archivo acaba un registro y empieza el siguiente. Es “\n” por omisión.  OFS – Separador de campos en la salida (Output FS), contiene el separador de campos para la salida generada por AWK. La instrucción print inserta en la salida un carácter de separación cada vez que aparece una coma en el código.

36 36© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  ORS – Separador de registros en la salida (Output RS), contiene el carácter que AWK escribirá al final de cada registro. Es “\n” por omisión.  NF – Número de campos de un registro (Number of Fields), contiene el número total de campos que contiene el registro que se está leyendo en cada momento. También se usa para nombrar el último campo.

37 37© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  NR – contiene el número de orden del registro que se está procesando en cada momento (Number of Record).  A continuación veamos algunos ejemplos donde se involucra el uso de estas variables:  Para imprimir las líneas o registros del archivo arch, incluido el número del registro, usaremos: awk –F # ′{print NR”\t”$0}′ arch.

38 38© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Para imprimir en pantalla los campos 1 y 2 del archivo arch separados por un caracter de tabulación (\t), usaremos: awk –F # -v OFS=“\t” ′{print $1,$2}′ arch.  Para imprimir las líneas impares del archivo arch, usaremos: awk ′{if (NR%2==1) print NR,$0}′ arch.

39 39© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Veamos algunos otros ejemplos de uso de AWK:  Para imprimir las líneas o registros del archivo /etc/passwd, usaremos: awk -F : ′{print $0}′ /etc/passwd.  Para mostrar solo los registros de usuarios del sistema en el archivo /etc/passwd, usaremos: awk -F : ′$3>=500 {print $0}′ /etc/passwd.

40 40© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  AWK puede ser incluido en un “piping” como cualquier otro comando o programa de LINUX, veamos algunos ejemplos de esto:  Para imprimir en pantalla un listado de todos los subdirectorios del directorio actual, usaremos: ls -l ¦ awk ′/^d/ {print $1,” “,$9}′.  Para mostrar los nombres de login de todos los usuarios “logueados” en la máquina, usaremos: who ¦ awk '{print $1}‘.

41 41© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Podemos ejecutar ordenes SHELL por medio de “piping” de comandos LINUX con AWK, por ejemplo:  Para borrar todos los subdirectorios del directorio actual, usaremos: ls -l ¦ grep ^d ¦ awk ′{print “rm -rf “$9}′ ¦ bash.  Para borrar todos los subdirectorios del directorio actual, ahora sin usar grep: ls -l ¦ awk '$1~/^d.*x/ {print $9}' ¦ xargs rm -r.

42 42© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Desarrollo Archivos de registros con AWK  Para borrar sólo los archivos del directorio actual, usaremos: ls -l * ¦ grep -v drwx ¦ awk '{print "rm "$9}' ¦ bash.  Para borrar sólo los archivos del directorio actual, ahora sin usar grep: ls -l ¦ awk '$1!~/^drwx/ {print $9}' ¦ xargs rm.

43 43© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Resumen  Resumen de la clase  Un proceso puede ejecutarse en PRIMER PLANO o bien en SEGUNDO PLANO.  Todos los PROCESOS en GNU/LINUX tienen una PRIORIDAD, esta PRIORIDAD permite ubicarlos en la cola de procesos listos para que sean atendidos por la CPU.  En los sistemas operativos GNU/LINUX, los PROCESOS pertenecen al usuario que los “lanzó”. Asimismo, se ejecutan con los mismos permisos que tiene ese usuario.

44 44© 2007 Cisco Systems, Inc. Todos los derechos reservados.Cisco Public Escuela de Informática y Telecomunicaciones Resumen  Resumen de la clase  Ciertamente que AWK puede no ser tan potente como numerosas herramientas que se pueden usar con la misma finalidad. Pero tiene la enorme ventaja de que, en un tiempo realmente corto, permite escribir programas que, aunque tal vez sean de un solo uso, están totalmente adaptados a nuestras necesidades, que en muchas ocasiones son sumamente sencillas.  AWK es ideal para los propósitos con los que se diseño: leer archivos línea por línea y procesar en base a los patrones y cadenas que encuentre en ellas.  Archivos del sistema como el /etc/password y muchos otros, resultan sumamente fáciles de tratar mediante el AWK, sin recurrir a nada más.  Y desde luego que AWK no es el mejor. Hay varios lenguajes de scripting con capacidades mucho mayores. Pero AWK sigue teniendo la ventaja de ser siempre accesible en cualquier instalación, por mínima que esta sea.


Descargar ppt "2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 11: Manipulación de PROCESOS en LINUX, Introducción."

Presentaciones similares


Anuncios Google