Esperando en procesos de largo? No!

La escena

[Cue música de órgano dramático] Empezaste imágenes de un gran disco duro, y es necesario seguir que con un md5sum del dispositivo para verificar el hash de datos en la imagen es la misma que la del dispositivo. Pero, es hora de ir a casa y la imagen no está completa! [Dunt, Dunt, DUN!] Sí, se podría haber escrito que mandas para iniciar el programa md5sum sobre la terminación de la adquisición, pero no lo hiciste. ¿Hay algo que usted puede hacer para asegurarse de que puede volver a casa con una cena caliente y en reposo completar la operación de hash?

apostar!!

Gran parte de la vida, la informática y la ciencia forense digital se incluye, ¿acerca de los procesos. Primera «A» pasa, a continuación, «B», y el próximo «C.» De imágenes de disco forense es así: Primero conecte el dispositivo, luego la imagen del dispositivo, y el próximo verificar la imagen. Herramientas visuales pueden ser útiles para este ya que se pueden configurar para hacer varios pasos secuenciales para nosotros. Tome la herramienta de imagen Guymager por ejemplo: que le permite verificar la imagen con un hash separada del dispositivo, y se lleva a cabo la formación de imágenes y verificación, una tras otra, sin la intervención del

. Pero lo que si usted está trabajando en la línea de comandos? ¿Cómo se puede iniciar un proceso inmediatamente después de otros ultima? De vuelta a nuestro escenario …

Lo que podría haber hecho

Toda la cuestión se podría haber resuelto en la línea de comandos BASH al emitir su orden de adquisición. BASH permite a los operadores de control para controlar el flujo de sus órdenes. Usted tiene la capacidad de ejecutar command_1 Y command_2 , o, alternativamente, command_1 O command_2 , por ejemplo. La pieza clave es el de salida (éxito o fracaso) de command_1.

  • Con el operador, que se representa en BASH por AND « && «, command_2 ejecutará si command_1 tuvo éxito (código de salida de 0).
  • Con el operador OR, que se representa en BASH por «‘Courier New’, Courier, | | «, command_2 se ejecutará si command_1 no tuvo éxito (no cero el código de salida)

Así que, si yo quería hacer una imagen de formato Perito con ewfacquire , una herramienta de la biblioteca libewf, y para continuar, de forma automática con un hash del dispositivo, pude:

# ewfacquire / dev / sdd && md5sum / dev / sdd

Con ese comando, el md5sum de / dev / sdd calculará si ewfacquire es exitosa,. Si ewfacquire falla por alguna razón, entonces la operación de hash no se ejecutará.

Woulda, Coulda, Shoulda!

Pero en nuestro caso, ya es hora en una adquisición y sería contraproducente para detener ewfacquire proceso que se acaba de utilizar el operador AND se describió anteriormente. ¿Cómo se puede hacer que el programa md5sum para funcionar después de la adquisición en tales circunstancias? Bueno, de dos maneras, como una cuestión de hecho.

Wait

El esperar comando es una orden interna del BASH que toma un ID de proceso como argumento. Cuando el proceso termina, espere salidas. Puede ser utilizado tanto como el ejemplo anterior:
‘Courier New’, Courier, monospace;»> # esperar 1972 && ; md5sum / dev / sdd

Por lo tanto, cuando esperar sale con éxito, el comienza md5sum operaciones. Si eso parece demasiado fácil, en cierto sentido, lo es. Wait sólo funciona en los procesos de la misma sesión de shell. Eso significa que para usar esperar , que tendría que interrumpir el ewfacquire proceso con ctrl-z, ejecute en segundo plano con bg y, a continuación, determinar su ID de proceso antes esperar funcionaría. Usted puede encontrar sacar esto adelante, porque ewfacquire mensajes se imprimirán en la toma de stderr de trabajo en el shell ;. difícil

Una mejor manera

Usted puede lograr el mismo resultado que esperar y sin backgrounding la ewfacquire a través del proceso de BASH prueba orden interna. Con la prueba , es posible abrir otro shell, determinar el ID de proceso ewfacquire , y la prueba de la presencia del proceso en la segunda cubierta. Considere lo siguiente:

‘Courier New’, Courier, monospace;»> # ps-OPID =-C ewfacquire
1972
# while [-d / proc/1972]; hacer dormir 60; hecho && md5sum / dev / sdd

El primer comando, ps , muestra el proceso actual. Los argumentos aquí Formato de la salida para mostrar sólo el ID del proceso (-OPID = ) y buscar el proceso por el nombre (-c ewfacquire ). Hay muchas formas de determinar el identificador de proceso, y este comando es tomado de aquí para que pueda ver cómo se podría incorporar en un script

El mientras que en forma de [-d / proc/1972] para comprobar la presencia del directorio / proc/1972. Cada proceso en ejecución tiene un directorio en el sistema de ficheros proc /, que se retira cuando termina el proceso. El sueño comando detiene el bucle while 60 segundos a la vez. El ciclo termina con éxito cuando se quita el directorio proceso que causa el md5sum la ejecución


Puede parecer complicado a primera vista, pero su realidad no. Y se llega a ir a casa a una comida caliente en lugar de sobras frías para sus esfuerzos.

Deja un comentario

Tu dirección de correo electrónico no será publicada.