È sempre buona norma eseguire un processo di lunga durata all'interno di un Tmux sessione quando si lavora con sistemi remoti tramite SSH. Perché ti impedisce di perdere il controllo del processo in esecuzione quando la connessione di rete si interrompe improvvisamente. Nel caso in cui la connessione di rete venga interrotta per qualsiasi motivo, i processi all'interno della sessione di Tmux continueranno a essere eseguiti sui sistemi remoti, quindi puoi ricollegarti alla sessione di Tmux usando il comando "tmux attach" una volta che la connessione di rete è tornata online. Cosa succede se ti sei dimenticato di avviare la sessione di Tmux in primo luogo? Non importa quanto stai attento, a volte potresti dimenticare di avviare la sessione di Tmux. Ecco un modo semplice per evitare questo problema. È possibile avviare automaticamente la sessione Tmux sui sistemi remoti durante la registrazione tramite SSH. Ciò è particolarmente utile se hai perso la connessione di rete durante l'aggiornamento di un server Linux remoto tramite SSH dal tuo sistema locale. Tieni presente che il seguente suggerimento avvierà automaticamente una sessione Tmux ogni volta che tenti di accedere al tuo sistema Linux in locale o in remoto tramite SSH da un altro sistema.
Avvia automaticamente la sessione Tmux sul sistema remoto quando si accede tramite SSH
Per avviare automaticamente la sessione di Tmux durante la connessione tramite SSH, modifica il ~/.bash_profile del tuo sistema remoto file:
$ nano ~/.bash_profile
Se il file non è disponibile, crealo.
E aggiungi le seguenti righe:
if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi
Salva e chiudi il file. Disconnettersi e riconnettersi ai sistemi remoti. Verrai indirizzato a una nuova sessione Tmux denominata 'default' .
Ora, avvia qualsiasi processo all'interno della sessione di Tmux e staccalo premendo Ctrl+b seguito da d . Il processo continuerà a essere eseguito all'interno della sessione di Tmux anche dopo che la connessione di rete viene interrotta. Una volta che la connessione alla rete è tornata, SSH nel sistema remoto e vedrai che il lavoro è ancora in esecuzione!!
Dai un'occhiata al seguente output animato:
Consentitemi di chiarire cosa ho appena fatto nell'output sopra.
- Mi collego al mio server Ubuntu remoto tramite SSH dal mio sistema locale. Viene avviata automaticamente una nuova sessione di Tmux denominata "default".
- All'interno della sessione di Tmux, eseguo un comando (es. watch grep \"cpu MHz\" /proc/cpuinfo) per monitorare la velocità della CPU.
- Quindi, mi sono disconnesso dalla sessione premendo Ctrl+b e d .
- E poi, elenco le sessioni di Tmux usando il comando "tmux ls" ed esco dalla sessione SSH.
- Infine, mi ricollego al sistema remoto tramite SSH e verifico se il processo continua a funzionare all'interno della sessione di Tmux senza alcuna interruzione.
Spero che tu capisca.
Per interrompere l'avvio automatico della sessione di Tmux, elimina semplicemente le righe aggiunte in precedenza dal ~/.bashrc del tuo sistema remoto o ~/.bash_profile file.
Questo semplice consiglio ti aiuta a evitare di perdere il controllo dei tuoi lavori a distanza. Non è sempre necessario avviare manualmente Tmux ogni volta. Basta fare in modo che Tmux si avvii automaticamente ogni volta che esegui SSH in un sistema remoto come descritto in questa guida.
Lettura consigliata :
- Come avviare automaticamente la sessione dello schermo su Linux durante l'accesso
- Reptyr:sposta un processo in esecuzione da un terminale all'altro senza chiuderlo