{{tag> linbo-remote screen sessions session überwachen script bash}} ====== linbo-remote: Screens per Menü überwachen ====== Wenn man einen Raum synchronisiert und **viele** screen-Sessions per linbo-remote laufen, ist es wünschenswert, dass man zwischendurch nachsehen kann, wie weit die Übertragungen im einzelnen bereits fortgeschritten sind; oder auch einfach nur, was die Clients gerade tun bzw. nicht tun. Das musste man bisher mit "screen -r " machen, wobei man die per Hand eintippen musste, was bei vielen Sessions u.U. etwas umständlich sein kann. Dieses Script automatisiert diesen Prozess, indem es alle laufenden screen-Sessions ausliest und ein "grafisches" Menu mit Hilfe des "dialog"-Befehls anbietet, um die entsprechende Session "zurückzuholen". In Moment werden jedoch //auch// die Sessions der laufenden Bittorrent-Screens mit angezeigt! Das Script nennt sich "screen-manager.sh". Man kann es unter linuxmuster 6.x ausprobieren; es dürfte aber auch unabhängig davon funktionieren (ungetestet). **Vorgehensweise:** * Script herunterladen und unter dem Dateinamen //screen-manager.sh// abspeichern * //chmod +x screen-manager.sh// (ausführbar machen) * //./screen-manager.sh// ausführen. Wie üblich kommt man mit STRG+A D wieder aus einer Session heraus (Detached) und landet automatisch wieder im Hauptmenu! #!/bin/bash # screen-manager.sh # Geeignet für linuxmuster 6.x # von Michael Hagedorn # nach einer Vorlage von # http://nixcraft.com/showthread.php/15048-Passing-menu-arguments-from-file-to-cdialog-xdialog VER=1.1 # Wieviele Sessions laufen? lines=$(screen -ls | grep -F Detached |wc -l); # echo $lines; for((j=1;j<$lines+1;j++)); do # Welche zugehörigen Namen der screens? (werden in Datei geschrieben) NAME=$(screen -ls | grep -F Detached |awk -F\ '{print $1} ' |cut -d "." -f 2 |head -n $j |tail -n 1); # Die Optionen für das "dialog"-Menu werden in eine Datei geschrieben # ("off" bedeutet: Alle Menupunkte per default inaktiv) echo $NAME /off >>/tmp/names.$$ done i=1 while read line do # Welche PIDs gehören zu den Namen? (werden ebenfalls in Datei geschrieben) PID=$(screen -ls | grep -F Detached |awk -F\ '{print $1} ' |cut -d "." -f 1 |head -n $i |tail -n 1); echo $PID $line >>/tmp/options.$$ i=`expr $i + 1` done /tmp/ans.$$ # Abbruch-Bedingung: opt=${?} if [ $opt != 0 ]; then echo "Ende!"; cleanup; exit 0; fi # Auswahl merken: result=`cat /tmp/ans.$$` if [ $result ] then screen -r $result else echo "Keine Auswahl getroffen! Nochmal..."; fi cleanup; } while true; do main_menu done #EOF Das Script kann bei Bedarf sehr leicht abgewandelt und zu einem völlig anderen Zweck benutzt werden. Die entsprechenden Zeilen mit den //screen//-Anweisungen müssen nur entsprechend angepasst werden. Das Script wurde mittlerweile an linuxmuster-v7.x angepasst, da dort anstelle von screen der Befehl tmux verwendet wird, um die Torrents im Hintergrund laufen zu lassen. Es waren ein paar Anpassungen notwendig, die man hier finden kann: https://ask.linuxmuster.net/t/screen-manager-neue-version-an-tmux-angepasst/9855