En bash, ¿cuáles son las posibles consecuencias negativas de pausar un proceso con control-z?

11

Usando bash, uno puede pausar un proceso con control-z. Sin embargo, ¿hay alguna circunstancia general o pautas a tener en cuenta donde un proceso no se comportaría bien con una pausa?

Mi escenario específico fue crear un archivo tar que tardara más de lo esperado. Quería pausarlo para ponerlo en segundo plano, pero decidí no hacerlo. Mi pregunta no es, por supuesto, específica del alquitrán. Por el contrario, espero entender un poco mejor la función de pausa en bash, así como lo que haría que un proceso reaccionara mal ante una pausa.

Wesley
fuente

Respuestas:

3

Tareas de almacenamiento (pvmove, veritas vx-lo que sea) que dependen de copias atómicas. No es bueno si se quedan fuera de su control. Depende de si la tarea solo dispara alguna API y hace el resto desde el espacio del kernel, entonces es segura. Si está sucediendo en ese * proceso * en su shell, entonces realmente vaya con la pantalla y no toque las manos.

Definitivamente te recomiendo que evites detenerlos a un segundo plano. Los comandos que usan buffers como dd parecen estar mejor, con la excepción de las unidades de cinta mencionadas anteriormente.

(Una vez gané un reinicio adicional, menos horas de sueño y mucha paranoia cuando eso me sucedió mientras limpiaba el desorden de otras personas. Obviamente: no intentes tomar atajos si estás arreglando los atajos de otras personas ...)

Florian Heigl
fuente
6

Si su proceso está escribiendo datos, solo tenga en cuenta que los problemas de sincronización con dispositivos de acceso no aleatorio y buffers pueden ser problemáticos. He visto que las unidades de cinta tienen problemas con esto a veces.

Magallanes
fuente
las sesiones de red / firewall pueden exceder el tiempo de espera y no reiniciarse porque TCP-SYN no se reenvía.
jippie
Sin embargo, la pila TCP continuaría enviando ACK si la ventana está llena, ¿verdad?
Magellan
Mantener paquetes vivos no es parte del protocolo TCP ni del protocolo IP, en el mejor de los casos es parte de la aplicación. Por lo tanto, un firewall o un cliente o servidor remoto puede agotar el tiempo de espera de un paquete y desconectar el socket / conexión.
jippie
Sin hablar con keepalives, esos son obviamente el nivel de aplicación. Estoy hablando de ACK para la ventana deslizante TCP en el nivel de transporte.
Magellan
2

Y el escenario mundano: ¡hacer Ctrl-Z, luego olvidarlo y cerrar sesión, y perder el proceso! =)

gfountis
fuente
0

No es realmente una respuesta específica a la pregunta, pero, alternativamente, podría intentar ejecutar trabajos simultáneos utilizando screen. Por lo tanto, puede usar el shell simultáneamente con otro programa.

jhtong
fuente
Sí, la pantalla siempre es un buen camino a seguir. Sin embargo, no estoy seguro de cómo responder a su nombre.
Wesley
@toiletfreak ¿Cómo es la pantalla una alternativa a la pausa? La pantalla ejecuta un trabajo en segundo plano, ¿verdad? Pero continúa si separas la pantalla ...
Bernhard