In bash, quali sono le potenziali conseguenze negative della sospensione di un processo con control-z?


11

Usando bash, si può mettere in pausa un processo con control-z. Tuttavia, ci sono circostanze generali o linee guida da tenere presenti quando un processo non si comporterebbe bene con la sospensione?

Il mio scenario specifico era la creazione di un file tar che richiedeva più tempo del previsto. Volevo metterlo in pausa per metterlo in background, ma ho deciso di non farlo. La mia domanda non è, ovviamente, specifica per tar. Piuttosto, spero di capire un po 'meglio la funzione di pausa in bash, nonché cosa farebbe reagire male un processo alla sospensione.

Risposte:


3

Attività di archiviazione (pvmove, veritas vx-qualunque) che si basano su copie atomiche. Non va bene se rimangono bloccati al di fuori del loro controllo. Dipende dal fatto che l'attività esegua solo alcune API e faccia il resto dallo spazio del kernel, quindi è sicura. Se sta succedendo in quel * processo * nella tua shell, vai davvero con lo schermo e tieni le mani lontane.

Consiglio vivamente di evitare di fermarli sullo sfondo. I comandi che utilizzano buffer come dd sembrano essere migliori, ad eccezione delle unità nastro menzionate sopra.

(Una volta ho vinto un riavvio aggiuntivo, meno sonno e molta paranoia quando è successo a me mentre chiarivo il disordine degli altri. Ovviamente: non provare a prendere scorciatoie se stai riparando le scorciatoie di altre persone ...)


6

Se il processo elabora i dati, tenere presente che i problemi di temporizzazione con dispositivi di accesso e buffer non casuali possono essere problematici. Ho visto che le unità a nastro hanno problemi con questo a volte.


le sessioni di rete / firewall potrebbero andare in timeout e non essere riavviate perché TCP-SYN non viene reinviato.
jippie,

Lo stack TCP continuerebbe a inviare ACK che la finestra è piena, giusto?
Magellan,

Mantenere i pacchetti in vita non fa parte del protocollo TCP né IP, nella migliore delle ipotesi fa parte dell'applicazione. Quindi un firewall o un client o un server remoto possono timeout in attesa di un pacchetto e rilasciare il socket / connessione.
jippie,

Non parlando con keepalives, quelli sono ovviamente a livello di applicazione. Sto parlando di ACK per la finestra scorrevole TCP a livello di trasporto.
Magellan,

2

E lo scenario banale: fare Ctrl-Z, poi dimenticarsene e disconnettersi e perdere il processo! =)


0

Non proprio una risposta specifica alla domanda, ma in alternativa, è possibile tentare di eseguire lavori simultanei utilizzando screen. È quindi possibile utilizzare la shell contemporaneamente con un altro programma.


Sì, lo schermo è sempre una buona strada da percorrere. Tuttavia, non sono sicuro di come rispondere al tuo nome.
Wesley,

@toiletfreak In che modo lo schermo è un'alternativa alla pausa? Lo schermo esegue un processo in background, giusto? Ma continua se si stacca lo schermo ...
Bernhard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.