Si vous vous connectez en SSH à une distribution Linux qui a systemd, vous pouvez utiliser systemd-run
pour lancer un processus en arrière-plan (dans les termes de systemd, "un service transitoire"). Par exemple, supposons que vous souhaitiez envoyer un ping à quelque chose en arrière-plan :
systemd-run --unit=pinger ping 10.8.178.3
L'avantage que vous obtiendrez avec systemd par rapport à la simple exécution d'un processus avec nohup
est que systemd suivra le processus et ses enfants, conservera des journaux, se souviendra du code de sortie et vous permettra de tuer proprement le processus et tous ses enfants. Exemples :
Voir le statut et les dernières lignes de sortie :
systemctl status pinger
Diffusez la sortie :
journalctl -xfu pinger
Tuer :
systemctl kill pinger
Comme alternative à nohup
, vous pouvez exécuter votre application distante dans un multiplexeur de terminal, tel que GNU screen
ou tmux
.
L'utilisation de ces outils facilite la reconnexion à une session à partir d'un autre hôte, ce qui signifie que vous pouvez lancer une longue construction ou télécharger avant de quitter le travail et vérifier son statut lorsque vous rentrez chez vous. Par exemple. Je trouve cela particulièrement utile lorsque je fais du travail de développement sur des serveurs très éloignés (dans un pays différent) avec une connectivité peu fiable entre moi et eux, si la connexion tombe, je peux simplement me reconnecter et continuer sans perdre aucun état.