Dauerhafte tmux-Sitzung mit gemeinsam genutztem Socket

Dauerhafte tmux-Sitzung mit gemeinsam genutztem Socket

Ich möchte, dass immer eine Tmux-Sitzung auf einem Socket in /tmp/shared mit einer Sitzung von 0 vorhanden ist. Auf diese Weise kann ich mich immer über SSH mit der Sitzung verbinden:

ssh [email protected] -t tmux -S /tmp/shared attach-session -t 0

Ich möchte, dass es mit anderen Benutzern gemeinsam genutzt werden kann und sich selbst neu erstellen kann, wenn ein weniger sachkundiger oder unvorsichtiger Benutzer beim Verlassen der Sitzung „exit“ anstelle von [Strg] + D verwendet.

Ich bin sicher, dass dies in einem Cron möglich ist, aber ich weiß nicht, ob es nicht einen besseren Weg gibt.

Antwort1

Das Erstellen einer Socket-Datei im Besitz der gemeinsamen Gruppe ausgewählter Benutzer und die Verwendung eines Sitzungsnamens wäre besser als die Verwendung einer Sitzungsnummer.

/// Create session
tmux -S /tmp/shareds new -s sharedsession
/// Change ownership to group
chgrp mutual_group_name /tmp/shareds
/// Run this in other user or ssh session to attach yourself
tmux -S /tmp/shareds attach -t sharedsession

Einige Möglichkeiten zum Überprüfen des Sitzungsstatus:

  1. Sie können einen Cron erstellen, dies verzögert jedoch die Erstellung der gemeinsamen Sitzung aufgrund der Mindest-1-Minuten-Regel.
  2. init.d-Skript, um es als Dienst auszuführen, ähnlich wieDieses hier
  3. Sie können supervisord installieren und es verwenden, um Ihr Skript zur gemeinsamen Sitzungserstellung automatisch zu dämonisieren

Letztes Jahr habe ichtmateläuft als Daemon. Sie können einen Tmate-Server und angeschlossene Sitzungen von verschiedenen Maschinen aus erstellen, indem Sie darin Tmate als Daemon verwenden. Ich kann hierfür jedoch keine Sicherheit garantieren, da ich sie in einem privaten Netzwerk verwende.

Antwort2

Folgendes wird an Sitzung 0 angehängt oder erstellt eine neue Sitzung:

tmux new-session -t 0 || tmux

Ich glaube nicht, dass Sie Sitzungen mit einer bestimmten Sitzungsnummer erstellen können. Sie sollten daher die Verwendung eines Sitzungsnamens in Betracht ziehen. Ein benutzerdefinierter Socket kann jedoch für Ihre Situation durchaus ausreichend sein.

Ich gehe hier davon aus, dass Sitzung 0 erstellt wird, wenn sie nicht existiert.

verwandte Informationen