How to kill all processes with one command in Linux

octubre 22nd, 2011

I was looking for a simple way to kill all the processes created by the Apache server in a linux machine.  I found this link http://oracleflash.com/20/How-to-kill-all-processes-with-one-command-in-Linux.html but it seems to be very complex.

Using the MAN ‘ps’ page http://unixhelp.ed.ac.uk/CGI/man-cgi?ps I found the same task can be done using only the ‘ps’ utility.

To the person who is in a hurry:

[root@machine ~]# kill -s 9 `ps -o pid= -C httpd`

For the learner:

Let suppose we need to kill all the processes created by apache. In my machine apache is running from /usr/sbin/htttpd so the ps command output is something like:

[root@mymachine ~]# ps -fea | grep httpd
root      4336     1  1 22:34 ?        00:00:00 /usr/sbin/httpd
root      4338  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4339  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4340  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4341  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4342  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4343  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4344  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4345  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4346  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4347  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
root      4352  3928  0 22:34 pts/2    00:00:00 grep httpd

We can select only the apache processes without using ‘grep’.

[root@mymachine~]# ps -f -C httpd
UID        PID  PPID  C STIME TTY          TIME CMD
root      4336     1  0 22:34 ?        00:00:00 /usr/sbin/httpd
root      4338  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4339  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4340  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4341  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4342  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4343  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4344  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4345  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4346  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd
apache    4347  4336  0 22:34 ?        00:00:00 /usr/sbin/httpd

As you can see this way is more appropriate because the ‘grep’ associated process is not shown at the bottom of the list. Next step is about how to select only the PID column and avoid the others. This can be done using the -o option of the ‘ps’ command.

[root@mymachine ~]# ps -o pid=ProcIdColName -C httpd
ProcIdColName
         4336
         4338
         4339
         4340
         4341
         4342
         4343
         4344
         4345
         4346
         4347

In the above command, we decided to visualize only the PID column and we did set a custom name (ProcIdColName) to the resulting column.

Now using the same approach that Zahid, and putting all together we can execute the next command.


[root@machine ~]# kill -s 9 `ps -o pid= -C httpd`

 

We’ve set the custom column name to ” (void, nothing,blank) . This allow to pass the output of ‘ps’ directly to the kill utility.

To check all the processes were closed we can execute again a ‘ps’ command


[root@machine ~]# ps -o pid=ProcIdColName -C httpd
ProcIdColName
[root@machine ~]

‘ps’ is very powerful to create custom formats  and gives a lot of methods to filter the process list, so take a while to look it’s man page.

JMeter – Mejor herramienta de Open Source para las pruebas de carga.

septiembre 10th, 2011

Recientemente se ha publicado un articulo en la revista Avances en Sistemas e Informática de la Universidad Nacional de Colombia. En uno de sus artículos, COMPARACIÓN DE LAS CARACTERÍSTICAS DE ALGUNAS HERRAMIENTAS DE SOFTWARE PARA PRUEBAS DE CARGA, creado por Carlos Mario Zapata J, Ph.D , Crhistian de Jesús Cardona Velásquez, Msc,  se realiza la comparación entre las características disponibles en las herramientas de pruebas de carga.  Como resultado se obtienen varias categorias, bajo medio y avanzado. Cada herramienta obtiene una puntuación númerica que entre mayor sea implica mayor funcionalidad de la herramienta. En la categoría avanzado, la herramienta JMeter fue la mejor de las herramientas libres. El puntaje obtenido por JMeter  fue bastante alto y cercano a las dos mejores herramientas propietarias.

Un resultado importante en la comparación de funcionalidades entre herramientas libres y propietarias que tendrá seguramente un alto impacto en las decisiones relacionadas con costos de muchos proyectos.

Mis Rutas Bogotá

agosto 1st, 2011

Este sitio web ha sido creado con el objetivo de brindar a las personas que viven en la ciduad de Bogotá, un sistema de información mínimo que les permita conocer el sistema de transporte público urbano de pasajeros colectivo. Sistemas similares existen en otras ciudades y para sistemas de transporte diferentes. Aunque el transporte público de pasajeros en la ciudad de bogota es primordialmente colectivo no existe un sistema de información que permita la busqueda de rutas, la visualización de sus trayectos y de su relación con las empresas transportadoras.

Ir a Mis rutas Bogota

Problema de Investigación – Validación no satisfactoria.

junio 3rd, 2011
En la actualidad, existen un gran número de soluciones educativas para adquirir conocimiento teórico, desde páginas web hasta plataformas de aprendizaje. Muchas instituciones y universidades han optado por el uso las plataformas educativas basadas en TICs, ya que, además de permitir la organización y visualización del contenido teórico de una forma secuenciada y estructurada, también ofrecen un conjunto de servicios como: herramientas orientadas a la colaboración entre estudiantes y profesores, seguimiento y evaluación de estudiantes, etc.
Al mismo tiempo que se han desarrollado plataformas educativas, se ha ido desplegando otra solución educativa orientada a la adquisición de habilidades o conocimiento práctico. Esta solución recibe el nombre de laboratorios virtuales o remotos, y permiten que un estudiante experimente sobre instrumentos simulados o reales, en cualquier momento y en cualquier lugar.
Algunos trabajos se han realizado en la dirección de generar marcos de trabajo y arquitecturas bien definidas para la implementación de proyectos de laboratorio remoto, sin embargo dichos esfuerzos no han sido suficientes para promover la creación de herramientas abiertas y bien documentas, de bajo costo y de fácil acceso, así como la creación de estándares y comunidades enfocadas en la implementación de laboratorios virtuales y remotos.
Es importante desarrollar una implementación de arquitectura para laboratorios remotos que sea abierta y accesible, que permita otorgar un gran numero de funcionalidades tales que una organización pueda incrementalmente crecer en la prestación de servicios.
La comunidad debe  realizar un esfuerzo para proveer mas plataformas  abiertas y de libre acceso cuyos componentes principales sean resultados de proyectos ejecutados. El libre acceso y el conocimiento abierto del funcionamiento de las plataformas fomentan la reusabilidad de soluciones creadas y permite que los esfuerzos subsiguientes se enfoquen en la creación de nuevas característas para las plataformas.
Sin embargo, el problema de la falta de plataformas abiertas y de libre acceso, no es un problema propio de investigación. Es un problema de implementación. La existencia de las plataformas accesibles libremente no esta sujeta a la creación o descubrimiento de nuevos métodos o técnicas. Según lo anterior, el problema de investigación inicialmente concebido, pierde validez y debe ser nuevamente creado de forma sistemática. Esta definición debe estar basada en el segundo interés de investigación que ha sido presentado “Herramientas de Autor para la creación de Sistemas Tutores Inteligentes que asistan procesos educativos en Ingeniería Electrónica.”
La definición del nuevo problema de investigación debe responder al proceso sistemático de conceptualización. Esto implica la generación de una visión amplia que guiada por la revisión de la producción científica debe permitir la concepción de una visión enfocada. Tras el proceso de análisis y síntesis de la revisión de la literatura debe poderse refinarse la visión enfocada de forma tal que represente un problema específico de investigación, el cual es validado tras los procesos de comparación con el estado del arte y las tendencias de la investigación en el dominio de conocimiento abordado.

Estado del Arte Final.

junio 3rd, 2011

Estado del Arte Final

Presentación v2

mayo 18th, 2011

Presentacion1_v2

 

 

Buenos días  a todos, mi nombre es Oscar Eduardo Cala, Estudiante de la Maestría en Ingeniería de Sistemas y Computación, el tema seleccionado para el establecimiento del estado del arte corresponde a las arquitecturas de software utilizadas en los sistemas de laboratorios remotos utilizados  para la enseñanza de ingeniería de control.
Para la mayoría de nosotros es  conocido que  una arquitectura de software define y comprende los componentes, estructuras, servicios y tecnologías que se utilizan para la creación de un sistema. Define las relaciones  que existen entre las diferentes  entidades y componentes del sistema y por lo tanto permite comprender su funcionamiento.
Sin embargo no siempre las arquitecturas se definen de una manera usable, en ocasiones resultan bastante abstractas, bastante generales, y resulta difícil tomar decisiones correctas acerca de la implementación concreta de la arquitectura.
Adicionalmente el proceso de instanciación e implementación de la arquitectura debe realizarse bajo un conjunto de restricciones que generalmente impiden que el resultado final de la implementación sea una fiel a las características planteadas por la arquitectura general.
Suelen existir restricciones en cuanto al personal que puede ejecutar el proyecto, generalmente por temas presupuestales.
Suelen existir requerimientos de tiempo que implican el uso de tecnologías no apropiadas
Deben cumplirse los requerimientos técnicos que la infraestructura imponga.
En un caso ideal, la implementación debería ser lo mas fiel posible a su definición por lo tanto deberían poderse encontrar implementaciones como las de la figura donde se explota la interoperabilidad de la arquitectura. El cliente se implementa utilizando HTML5, el primer servidor utiliza IIS para aceptar conexiones, y los servidores de experimentación pueden utilizar tecnologías y plataformas diferentes. Los experimentos son variados y pueden abarcar temáticas relacionadas con varios dominios de conocimiento.
Sin embargo la implementación de las arquitecturas generales no resultan siendo fieles a la definición lo que resulta en sistemas que pierden las propiedades ya definidas por la arquitectura. En la arquitectura mostrada en la figura, el servidor se utiliza como un túnel entre el cliente y el servidor de experimentación.  El uso de VPN genera riesgos de seguridad al exponer la a red remota la red local. Requiere el uso de puertos que normalmente están cerrados por firewalls, requiere el uso de programas que podrían no estar permitidos para la sesión actual del usuario.
En este ejemplo se ha unido el servidor central  con el servidor de experimentación. Requiere la conexión de tarjetas  de adquisición de datos en el servidor lo que es peligroso, y poco recomendable. La solución depende de que muchos componentes  estén funcionando en el mismo servidor. EL hardware queda expuesto a internet al estar conectado a un servidor expuesto.
En este ejemplo se muestra un proyecto que difícilmente puede escalar, utiliza software especifico que acopla de manera fuerte varias de las piezas de software. Corresponden a montajes experimentales que no deberían ser utilizados para producción.
Se encuentran en la literatura un gran número de implementaciones de Laboratorios remotos. El conjunto de todas estas soluciones se caracteriza por la falta de reusabilidad de los componentes, la falta de escalabilidad de las soluciones y la falta de modularidad. Son pocas las soluciones que son cercanas a ser completas pero dichas soluciones  no son abiertas ni accesibles.
El problema no son las arquitecturas, pues existen propuestas muy buenas. Por ejemplo en esta arquitectura los usuarios dentro y fuera del campus pueden acceder a los servidores de experimentación los cuales controlan los dispositivos de hardware y los dispositivos de transmisión de audio y video. Pueden agregarse cuantos servidores sean necesarios. Adicionalmente existe la posibilidad de usar servicios web para complementar las capacidades del sistema.
En esta propuesta los servidores de experimentación se implementan utilizando maquinas virtuales, de manera que las maquinas virtuales pueden ser encendidas o apagadas, movidas entre sistemas de hosting. Todo controlado por el arbitrator quien es el capaz controlar el acceso a los usuarios.
Esta arquitectura es presentada de una manera muy conveniente porque permite identificar los usuarios locales y remotos respecto a la LAN, se identifican las diferentes redes de conexión de dispositivos, y se identifica la capa de midleware.
El problema entonces es causado entonces porque las implementaciones no obedecen formalmente a las arquitecturas. Aun cuando las arquitecturas definen una cantidad de componentes y funcionalidad que debe siempre mantenerse, lo que realmente se implementa resulta siendo un subconjunto de funcionalidades ya no relacionada con la arquitectura.
Un caso critico resulta siendo la arquitectura de sotfware de los sistemas que utilizan la tecnologia J2EE. J2EE define un buen número de componentes de software y plataformas que generalmente se definen de manera abstracta utilizando Interfaces Avanzadas de Programación. Estas interfaces luego son implementadas por los servidores de aplicación y luego son re-implementadas y usadas por los desarrolladores. Todo esto muestra un gran proceso de abstracción.
Aun cuando los niveles de abstracción de la definición son bastante altos, la existencia de un gran número de herramientas tecnológicas disponibles en cada capa de la arquitectura, hace posible la implementación de la arquitectura manteniendo su estructura intacta.

Buenos días  a todos, mi nombre es Oscar Eduardo Cala, Estudiante de la Maestría en Ingeniería de Sistemas y Computación, el tema seleccionado para el establecimiento del estado del arte corresponde a las arquitecturas de software utilizadas en los sistemas de laboratorios remotos utilizados  para la enseñanza de ingeniería de control.
Para la mayoría de nosotros es  conocido que  una arquitectura de software define y comprende los componentes, estructuras, servicios y tecnologías que se utilizan para la creación de un sistema. Define las relaciones  que existen entre las diferentes  entidades y componentes del sistema y por lo tanto permite comprender su funcionamiento.
Sin embargo no siempre las arquitecturas se definen de una manera usable, en ocasiones resultan bastante abstractas, bastante generales, y resulta difícil tomar decisiones correctas acerca de la implementación concreta de la arquitectura.
Adicionalmente el proceso de instanciación e implementación de la arquitectura debe realizarse bajo un conjunto de restricciones que generalmente impiden que el resultado final de la implementación sea una fiel a las características planteadas por la arquitectura general.
Suelen existir restricciones en cuanto al personal que puede ejecutar el proyecto, generalmente por temas presupuestales.Suelen existir requerimientos de tiempo que implican el uso de tecnologías no apropiadasDeben cumplirse los requerimientos técnicos que la infraestructura imponga.

En un caso ideal, la implementación debería ser lo mas fiel posible a su definición por lo tanto deberían poderse encontrar implementaciones como las de la figura donde se explota la interoperabilidad de la arquitectura. El cliente se implementa utilizando HTML5, el primer servidor utiliza IIS para aceptar conexiones, y los servidores de experimentación pueden utilizar tecnologías y plataformas diferentes. Los experimentos son variados y pueden abarcar temáticas relacionadas con varios dominios de conocimiento.
Sin embargo la implementación de las arquitecturas generales no resultan siendo fieles a la definición lo que resulta en sistemas que pierden las propiedades ya definidas por la arquitectura. En la arquitectura mostrada en la figura, el servidor se utiliza como un túnel entre el cliente y el servidor de experimentación.  El uso de VPN genera riesgos de seguridad al exponer la a red remota la red local. Requiere el uso de puertos que normalmente están cerrados por firewalls, requiere el uso de programas que podrían no estar permitidos para la sesión actual del usuario.
En este ejemplo se ha unido el servidor central  con el servidor de experimentación. Requiere la conexión de tarjetas  de adquisición de datos en el servidor lo que es peligroso, y poco recomendable. La solución depende de que muchos componentes  estén funcionando en el mismo servidor. EL hardware queda expuesto a internet al estar conectado a un servidor expuesto.
En este ejemplo se muestra un proyecto que difícilmente puede escalar, utiliza software especifico que acopla de manera fuerte varias de las piezas de software. Corresponden a montajes experimentales que no deberían ser utilizados para producción.

Se encuentran en la literatura un gran número de implementaciones de Laboratorios remotos. El conjunto de todas estas soluciones se caracteriza por la falta de reusabilidad de los componentes, la falta de escalabilidad de las soluciones y la falta de modularidad. Son pocas las soluciones que son cercanas a ser completas pero dichas soluciones  no son abiertas ni accesibles.

El problema no son las arquitecturas, pues existen propuestas muy buenas. Por ejemplo en esta arquitectura los usuarios dentro y fuera del campus pueden acceder a los servidores de experimentación los cuales controlan los dispositivos de hardware y los dispositivos de transmisión de audio y video. Pueden agregarse cuantos servidores sean necesarios. Adicionalmente existe la posibilidad de usar servicios web para complementar las capacidades del sistema.

En esta propuesta los servidores de experimentación se implementan utilizando maquinas virtuales, de manera que las maquinas virtuales pueden ser encendidas o apagadas, movidas entre sistemas de hosting. Todo controlado por el arbitrator quien es el capaz controlar el acceso a los usuarios.

Esta arquitectura es presentada de una manera muy conveniente porque permite identificar los usuarios locales y remotos respecto a la LAN, se identifican las diferentes redes de conexión de dispositivos, y se identifica la capa de midleware.
El problema entonces es causado entonces porque las implementaciones no obedecen formalmente a las arquitecturas. Aun cuando las arquitecturas definen una cantidad de componentes y funcionalidad que debe siempre mantenerse, lo que realmente se implementa resulta siendo un subconjunto de funcionalidades ya no relacionada con la arquitectura.

Un caso critico resulta siendo la arquitectura de sotfware de los sistemas que utilizan la tecnologia J2EE. J2EE define un buen numero de componentes de software y plataformas que generalmente se definen de manera abstracta utilizando Interfaces Avanzadas de Programación. Estas interfaces luego son implementadas por los servidores de aplicación y luego son re-implementadas y usadas por los desarrolladores. Todo esto muestra un gran proceso de abstracción.
Aun cuando los niveles de abstracción de la definición son bastante altos, la existencia de un gran número de herramientas tecnológicas disponibles en cada capa de la arquitectura, hace posible la implementación de la arquitectura manteniendo su estructura intacta.

 

Evaluación de Articulos

abril 24th, 2011

En el siguiente enlace puede descargar la evaluación de los tres articulos más relevantes que fueron seleccionados de la bibliografia anotada. Para cada articulo se presenta un resumen del contenido más importante del articulo y se tratan explicitamente criterios sugeridos en el curso para la evaluación de los articulos.

Evaluación de Articulos

Bibliografía Anotada

abril 24th, 2011
Según las indicaciones dadas en la página del curso, se pone a disposición el siguiente archivo en formato BibTex el cual contiene el listado de referencias que fueron anotadas incluyendo  los comentarios  a  cada una.

Documento: Tema enfocado

abril 4th, 2011

Actualmente, existen un gran número de soluciones educativas para adquirir conocimiento teórico, desde sencillas páginas web hasta complejas plataformas de aprendizaje que integran muchos servicios.

Muchas instituciones y universidades han optado por el uso de las plataformas educativas, ya que, además de poder organizar y mostrar el contenido teórico de una forma secuenciada y/o estructurada, también ofrecen un conjunto de servicios y herramientas orientadas a la colaboración entre estudiantes y profesores, el seguimiento de estudiantes y la evaluación de estos.

Es importante destacar que la mayoría de las plataformas actuales soportan estándares e-learning para reutilizar objetos educativos o elementos de evaluación (test, preguntas de rellenado de huecos, etc.). Al mismo tiempo, se ha ido desplegando otra solución educativa orientada a la adquisición de habilidades y conocimiento práctico. Esta solución recibe el nombre de laboratorios virtuales o remotos  y permiten que un estudiante experimente sobre instrumentos simulados o reales, en cualquier momento y en cualquier lugar.  Este enfoque, ha gozado de una gran popularidad y sido acogido por muchas organizaciones educativas gracias a sus múltiples ventajas, especialmente por la reducción de costos, la posibilidad del acceso concurrente y el aprovechamiento de las tecnologías.

Sin embargo, el masivo uso y la posibilidad de obtener resultados directos gracias al uso de herramientas que esconden la mayor parte del funcionamiento al investigador, ha logrado que se generen muchas situaciones de inflexiblidad, falta de inter-operabilidad y de escalamiento.

Cada vez que se crea un laboratorio remoto o simulado es necesario realizar el diseño de una minima arquitectura que permita su implementación. este diseño normalmente se ajusta a los requerimientos especificos de una organización, pero generalmente de una forma inflexible que no permite el fácil cambio.

Hacer realidad una minima arquitectura implica implementar tecnologías desde el experimento, que se encuentra en un laboratorio universitario, hasta el Estudiante, que se encuentra en cualquier parte del mundo, enfrentando restricciones como las que impone la infraestructura ya existente en la organización. Este proceso es desgastante, costoso y altamente riesgoso. Dado que no existe un esquema totalmente flexible e interoperable, es dificil escapar de dichos riesgos.

Como resultado, se logra observar en la literatura un sin numero de diferentes implementaciones de laboratorios remotos, usando múltiples y hetereogeneas tecnologías, lo cual trae consigo, como ya se ha mencionado,  una gran falencia en cuanto a interoperabilidad se refiere.

Adicionalemente, aquellas implementaciones que se llevan a un entorno de producción real y cuya demanda aumenta constantemente, deben escalarse a una infraestructura cada vez mas robusta que permita prestar servicios para la colaboración entre estudiantes, para el mantenimiento del contenido educativo, para la administración del tiempo de uso de los experimentos, etc. Esta tarea generalmente es poco probable de lograr cuando desde un inicio no se han realizado los esfuerzos necesarios en diseño. Una vez se implementa una solución que no es flexible, muy difícilmente podrá escalarse para prestar mejores servicios.

Asi las cosas, es necesario hacer un estudio muy objetivo que permita comparar las diferentes arquitecturas que se han planteado hasta el momento. Buscar sus puntos débiles y sus ventajas.  Debe investigarse las diferentes posibilidades tecnológicas que una arquitectura tiene para ser implementada con el fin de establecer cual es la que mas opciones le otorga a una organización. Es importante que se puedan identificar varias opciones tecnológicas que se enmarquen en una misma arquitectura de manera que se pueda garantizar flexibilidad e inter-operabilidad.

No existe actualmente una arquitectura que integre todo el conjunto de funcionalidades vistas hasta el momento en implementaciones de laboratorios remotos. Es importante plantear una arquitectura que soporte la mayor cantidad de funcionalidades posibles de manera que una organización no se vea limitada cuando requiera crecer en funcionalidad.

Existe un gran interés en el soporte de funcionalidades como la integración de laboratorios remotos en plataformas LMS, la generación de entornos de experimentación colaborativos,  la capacidad de tutoría inteligente de los entornos de aprendizaje basados en laboratorios remotos y virtuales, la posibilidad de distribuir las responsabilidades en una gran infraestructura para poder compartir responsabilidades entre instituciones, la disminución de los costos en la instrumentación física y la fácil administración y mantenimiento de los experimentos.

Es necesario evaluar la posibilidad de incluir todas estas funcionalidades en el diseño de una arquitectura o en el refinamiento y completa aceptación de una ya creada.

Lista Filtrada de Referencias

abril 4th, 2011

Según las indicaciones dadas en la página del curso, se pone a disposición el siguiente archivo en formato BibTex el cual contiene el listado de referencias y los comentarios y notas de cada uno.

Descargar Archivo BibTex

Listado en Mendeley