Se stai usando SSH su una distribuzione Linux che ha systemd, puoi usare systemd-run
per avviare un processo in background (nei termini di systemd, "un servizio transitorio"). Ad esempio, supponendo che tu voglia eseguire il ping di qualcosa in background:
systemd-run --unit=pinger ping 10.8.178.3
Il vantaggio che otterrai con systemd rispetto alla semplice esecuzione di un processo con nohup
è che systemd terrà traccia del processo e dei suoi figli, manterrà i registri, ricorderà il codice di uscita e ti consentirà di terminare in modo pulito il processo e tutti i suoi figli. Esempi:
Guarda lo stato e le ultime righe dell'output:
systemctl status pinger
Trasmetti l'output:
journalctl -xfu pinger
Uccidi:
systemctl kill pinger
In alternativa a nohup
, potresti eseguire la tua applicazione remota all'interno di un multiplexer terminale, come GNU screen
o tmux
.
L'utilizzo di questi strumenti semplifica la riconnessione a una sessione da un altro host, il che significa che puoi avviare una build lunga o scaricarla prima di lasciare il lavoro e controllarne lo stato quando torni a casa. Per esempio. Lo trovo particolarmente utile quando eseguo lavori di sviluppo su server molto remoti (in un paese diverso) con connettività inaffidabile tra me e loro, se la connessione si interrompe, posso semplicemente riconnettermi e continuare senza perdere alcuno stato.