Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

605
Vistas
/usr/bin/time de un script bash que contiene símbolos de unión

digamos que tenemos un script bash que contiene comandos, algunos de los cuales pueden tener símbolos de y comercial ( & ). Me gustaría medir el tiempo de ejecución de una secuencia de comandos de este tipo utilizando /usr/bin/time, pero debido a los símbolos de unión, el trabajo real se realiza en segundo plano, mientras que la secuencia de comandos devuelve el comando al shell, lo que da como resultado mediciones iguales a cero. .

¿Hay alguna manera de suprimir el comportamiento de ampersand (es decir, no permitir que los comandos se ejecuten en segundo plano)?

La razón por la que estoy tratando de hacer esto es porque quiero hacer un punto de referencia a gran escala (gran cantidad de conjuntos de datos y más de varias herramientas (algunas de las cuales muestran tal comportamiento)).

Un ejemplo concreto, muy sencillo, sería el siguiente.

Cree un script test.sh que contenga:

 #! /bin/sh sleep 2 &

E intenta ejecutarlo con:

 /usr/bin/time ./test.sh

El resultado es:

 0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 668maxresident)k 0inputs+0outputs (0major+219minor)pagefaults 0swaps

El resultado esperado sería alrededor de 2 segundos (ya sea CPU o tiempo transcurrido).

Tenga en cuenta que el guión anterior es solo un ejemplo de juguete. Además, supongamos que no se puede modificar (míralo como un cuadro negro).

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Sí. Agregue una declaración de wait al final de su script. Esto hará que la secuencia de comandos " espere " a que finalicen las tareas en segundo plano.

over 4 years ago · Santiago Trujillo Denunciar

0

Esta es una combinación de respuestas de Elliott Frisch y Gilles (en los comentarios), y pretende resumir las cosas.

La respuesta es crear un script contenedor wrapper.sh que se vea así:

 #! /bin/sh . $*; wait

el . (comando fuente) obligará a que el trabajo se ejecute en el mismo shell y no en segundo plano, y wait esperará a que finalicen todos los subprocesos.

Esto ahora se puede ejecutar como:

 /usr/bin/time ./wrapper.sh ./test.sh

Tenga en cuenta que el uso del comando fuente le impide cambiar el intérprete en la línea shebang de test.sh

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda