Linux/Unix Shell Scripting - Pausar y reanudar procesos desde otra terminal

 
Vista:
Imágen de perfil de dryant
Val: 4
Ha disminuido su posición en 10 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pausar y reanudar procesos desde otra terminal

Publicado por dryant (9 intervenciones) el 25/01/2014 01:53:31
Hola a todos!

Hay alguna forma de detener un proceso sin terminarlo para poder reanudarlo despues?

Y para hacer lo mismo desde otra terminal?

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de barna_rasta
Val: 22
Ha aumentado su posición en 2 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pausar y reanudar procesos desde otra terminal

Publicado por barna_rasta (42 intervenciones) el 25/01/2014 02:08:46
Hola Dryant,

Para pausar un proceso deberemos conocer previamente el PID o identificador, esto lo obtenemos con
# ps -aux | more

Teniendo el PID del proceso podemos pausarla con:

# kill -STOP [ PID ]

Lo reanudamos con:

# kill -CONT [ PID ]
------------------------------------------------
De poder hacerlo en otra terminal .................. pues inicialmente no le veo inconveniente, aunque es algo que no experimente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de dryant
Val: 4
Ha disminuido su posición en 10 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pausar y reanudar procesos desde otra terminal

Publicado por dryant (9 intervenciones) el 25/01/2014 02:19:25
Hola Barna_rasta

Gracias por tu respuesta! En otra terminal me referia en otra ventana de terminal.
Porque con Jobs, no me aparecen en otra ventana.

Una curiosidad.

He creado un guion llamado 7-4.sh como este:

1
2
3
4
5
6
#!/bin/bash
 
( for (( i = 0; i < 1000; i++ )); do
	echo $i
	sleep 1
done )

y lo ejecuto en una ventana de terminal.

Abro otra ventana para probar lo que me dices y al ejecutar el stop me sale esto en la ventana en la cual se estaba ejecutando el guion:
[1]+ Stopped ./7-4.sh
dryant$

Pero siguen saliendo los numeros secuencialmente.

Es decir, me hace la detencion, me salta a la linea de comandos y me sigue ejecutando el script
Sabes por que?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barna_rasta
Val: 22
Ha aumentado su posición en 2 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pausar y reanudar procesos desde otra terminal

Publicado por barna_rasta (42 intervenciones) el 25/01/2014 14:42:20
Buenos dias Dryant,
reproduje tu ejemplo y salvo la eliminacion de un par de parentesis:
1
2
3
4
5
#!/bin/bash
for (( i = 0; i < 1000; i++ )); do
echo $i
sleep 1
done
Tengo GNU bash, version 4.2.37 en Debian-Wheezy

lo ejecuto en consola/terminal ( ALT+F1 )
# bash prova
------------ abro ( ALT+F2 ) y ejecuto
# ps -aux | grep prova para localizar el PID
# kill -STOP [PID] detiene
# kill -CONT [PID] reanuda ( en F1 )
# kill -SIGKILL [PID] finaliza

=================================================================
Para hacerlo bajo " sh " seria:
1
2
3
4
5
6
7
#!/bin/sh
 
for i in $(seq 0 1000)
do
    echo $i
    sleep 1
done

Ejecutamos
# sh prova
===========================================================
Quiero pensar que quizas, y es dificil poder reproducir exacto tu problema en mi equipo,
que el problema se basa en que -quizas- ejecutes el script definido como /bin/bash en la forma
# . 7-4.sh
y lo que estas pausando sea el " sleep " pues el script abre dos PID.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de dryant
Val: 4
Ha disminuido su posición en 10 puestos en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Pausar y reanudar procesos desde otra terminal

Publicado por dryant (9 intervenciones) el 25/01/2014 17:35:53
Efectivamente Barna_rasta!!!

Estaba ejecutando un archivo .sh con un Bash!!

Ha sido cambiar el #!/bin/bash por #!/bin/sh y me ha funcionado perfectamente!!

Muchas Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pausar y reanudar procesos desde otra terminal

Publicado por Tom (361 intervenciones) el 28/01/2014 09:12:22
Por culturilla shell, que nunca viene mal.
Cuando en un shell script pones un bloque de código entre paréntesis, como lo tenías originalmente, significa que eso se ejecuta en un sub-shell, es decir en un nuevo subproceso de bash.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Pausar y reanudar procesos desde otra terminal

Publicado por Ge2sasag (1 intervención) el 12/03/2017 17:55:44
Hola Dryant,

yo me preguntaba lo mismo, lo he hecho con kill -STOP y kill -CONT desde otra terminal y lo ha parado y reanudado sin problema, en mi caso he parado y reanudado un script en python.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar