En bash, quelles sont les conséquences négatives potentielles de la pause d'un processus avec control-z?

11

En utilisant bash, on peut suspendre un processus avec control-z. Cependant, existe-t-il des circonstances générales ou des directives à prendre en compte lorsqu'un processus ne se comporterait pas bien s'il était interrompu?

Mon scénario spécifique consistait à créer un fichier tar qui prenait plus de temps que prévu. Je voulais le mettre en pause pour le mettre en arrière-plan, mais j'ai décidé de ne pas le faire. Ma question n'est bien sûr pas spécifique au goudron. J'espère plutôt mieux comprendre un peu mieux la fonction de pause dans bash ainsi que ce qui ferait mal réagir un processus en cas de pause.

Wesley
la source

Réponses:

3

Tâches de stockage (pvmove, veritas vx-que ce soit) qui reposent sur des copies atomiques. Ce n'est pas bon s'ils restent coincés hors de leur contrôle. Cela dépend si la tâche déclenche simplement une API et fait le reste à partir de l'espace du noyau, alors c'est sûr. Si cela se produit dans ce * processus * dans votre shell, alors allez vraiment avec l'écran et gardez les mains libres.

Je vous recommande vivement d'éviter de les arrêter en arrière-plan. Les commandes qui utilisent des tampons comme dd semblent être mieux loties, à l'exception des lecteurs de bande mentionnés ci-dessus.

(J'ai gagné une fois un redémarrage supplémentaire, moins de sommeil et beaucoup de paranoïa quand cela m'est arrivé tout en nettoyant le gâchis des autres. Évidemment: n'essayez pas de prendre des raccourcis si vous corrigez les raccourcis des autres ...)

Florian Heigl
la source
6

Si votre processus écrit des données, sachez simplement que les problèmes de synchronisation avec les périphériques d'accès non aléatoire et les tampons peuvent être problématiques. J'ai parfois vu des problèmes avec les lecteurs de bande.

Magellan
la source
les sessions réseau / pare-feu peuvent expirer et ne pas être redémarrées car TCP-SYN n'est pas renvoyé.
jippie
La pile TCP continuerait à envoyer des ACK que la fenêtre est pleine, non?
Magellan
Garder en vie les paquets ne fait pas partie du protocole TCP ni du protocole IP, au mieux, il fait partie de l'application. Ainsi, un pare-feu ou un client ou serveur distant peut expirer en attendant un paquet et abandonner la connexion / socket.
jippie
Sans parler de Keepalives, ce sont évidemment des applications. Je parle des ACK pour la fenêtre coulissante TCP au niveau du transport.
Magellan
2

Et le scénario banal: faire Ctrl-Z, puis l'oublier et se déconnecter, et perdre le processus! =)

gfountis
la source
0

Pas vraiment une réponse spécifique à la question, mais vous pouvez également essayer d'exécuter des travaux simultanés à l'aide de screen. Vous pouvez donc utiliser le shell simultanément avec un autre programme.

jhtong
la source
Oui, l'écran est toujours une bonne solution. Cependant, je ne sais pas comment répondre à votre nom.
Wesley
@toiletfreak En quoi l'écran est-il une alternative à la pause? L'écran exécute un travail en arrière-plan, non? Mais ça continue si vous détachez l'écran ...
Bernhard