nohup non mostrerà il prossimo prompt nella sessione SSH

Aug 20 2020

Supponiamo che io sia connesso tramite SSH su un sistema Ubuntu remoto. Voglio eseguire uno script lì usando nohupin caso di potenziali interruzioni di connessione e reindirizzando il suo registro a un file. Il comando che eseguo è

nohup bash myscript.sh > log.txt &

Quindi, il terminale stampa il PID dello script e il messaggio:

nohup ignorando l'input e reindirizzando stderr a stdout

Il cursore si blocca e non sono in grado di eseguire altri comandi a meno che non esco dalla sessione SSH con Ctrl+ De ricollego. Preferirei che la sessione SSH rimanesse aperta e procedere al prompt del terminale successivo senza la necessità di riconnettersi. C'è un modo per ottenere questo risultato?

Risposte

1 roaima Aug 21 2020 at 03:39

Questo comando viene eseguito in background come ti aspetteresti. Tuttavia, in questa particolare istanza c'è una condizione di competizione in cui il messaggio di output viene scritto frazionalmente dopo il prompt della shell.

Il risultato visivo è che il prompt della shell precede il nohupmessaggio o che è completamente sovrascritto.

Il risultato pratico è che, poiché la shell ha scritto il suo prompt, è pronta per il comando successivo. Puoi premere Invio per generare un nuovo prompt o semplicemente digitare comunque il comando successivo.