screen
kennen die Meisten.
Es wird meist benutzt um Prozesse nach Ausstieg am laufen zu halten, oder um per share einen Fremdarbeiter von einem Gast-Account auf einen Root-Account zu lotsen und ihm beim seinen Arbeiten auf die Finger sehen zu können und im schlimmsten Fall eingreifen zu können.
Um den Ueberblick behalten zu können ist es von Vorteil Screen-Sitzungen zu erkennen.
Zu diesen Zweck ist es ratsam sich im Home-Folder eine .screenrc mit folgenen Inhalt an zu legen.
caption always "%{yg}     | %{rW} %H * $LOGNAME %{yg}|%{bw}%c %D %{yg}|%{rw}%{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%< %{yg}|%{bw} %S %{yg}"
termcapinfo xterm|xterms|xs|rxvt ti@:te@
Dies laest sich per
echo -e 'caption always "%{yg}     | %{rW} %H * $LOGNAME %{yg}|%{bw}%c %D %{yg}|%{rw}%{-}%-Lw%{rw}%50>%{rW}%n%f* %t %{-}%+Lw%< %{yg}|%{bw} %S %{yg}"'\\n'termcapinfo xterm|xterms|xs|rxvt ti@:te@'
bewerkstelligen.
Nun haben wir eine kleine Anzeigeleiste bei Aufruf von screen.

Um zuegiges Arbeiten mit mehreren Screen-Sizungen zu ermöglichen habe ich mir folgene Funktion in die ~/.bashrc implementiert.
function sc()
        {
        unset anum
        if [ "${1:0:2}" == "-h" ]||[ "${1:0:2}" == "-?" ]
                then
                echo -e "\033[0;32mReinis ${FUNCNAME[0]} V1.0\033[0m"
                echo "Reinis .bashrc Tools"
                echo ""
                echo -e "\033[1;30;47m${FUNCNAME[0]}\033[0m"
                echo "Oeffnet Screen-Sitzungen"
                echo ""
                echo -e "\033[1;30;47m${FUNCNAME[0]} -l\033[0m"
                echo "Listed die vorhandenen Screen-Sitzungen"
                echo ""
                echo -e "\033[1;30;47m${FUNCNAME[0]} -r\033[0m"
                echo "Reconnectet vorhandene Screen-Sitzungen"
                echo ""
                echo -e "\033[1;30;47m${FUNCNAME[0]} -d\033[0m"
                echo "Loescht die vorhandenen Screen-Sitzungen"
                return
        fi
        if [ "$1" == "-l" ]
                then
                screen -ls|grep 'Detached'|cut -f2 -d'-'|awk {'print $1'}|sort -n 2>/dev/null
                return
        fi
        if [ "${1:0:2}" == "-d" ]
                then
                if [ "${#1}" -le "2" ]
                        then
                        delnr=0
                        while [ "$delnr" != "q" ]
                                do
                                screen -ls|grep 'Detached'|cut -f2 -d'-'|awk {'print $1'}|sort -n 2>/dev/null
                                read -p "Nr des zu loeschenden Screens oder \"q\" fuer quit:" delnr
                                if [ "$delnr" == "q" ]
                                        then
                                        return
                                fi
                                delstr=$(screen -ls|awk {'print $1'}|grep "\-$delnr")
                                screen -S "$delstr" -X quit 2>&1>/dev/null
                                if [ "$delnr" != "" ]
                                        then
                                        echo "Screen $delnr beendet"
                                else
                                        echo "Kein Screen zum beenden vorhanden."
                                fi
                        done
                fi
                return
        fi
        if [ "${1:0:2}" == "-r" ]
                then
                if [ "${#1}" -le "2" ]
                        then
                        delnr=0
                        while [ "$delnr" != "q" ]
                                do
                                screen -ls|grep 'Detached'|cut -f2 -d'-'|awk {'print $1'}|sort -n 2>/dev/null
                                read -p "Nr des zu reconnet Screens oder \"q\" fuer quit:" delnr
                                if [ "$delnr" == "q" ]
                                        then
                                        return
                                fi
                                delstr=$(screen -ls|awk {'print $1'}|grep "\-$delnr")
                                screen -r "$delstr"
                        done
                fi
                return
        fi
        unset snum
        for a in $(screen -ls|grep 'Detached'|cut -f2 -d'-'|awk {'print $1'}|sort -n)
                do
                snum="$snum $a-,"
        done
        if [ "$snum" == "" ]
                then
                screen -S Screen-1
                return
        fi
        while :
                do
                ((anum=anum+1))
                echo "$snum"|grep -v " $anum-" 1>&2>/dev/null&&screen -S Screen-$anum&&return
        done
        screen -S Screen-1
        }
Nach neu Laden der ~/.bashrc per
. ~/.bashrc
oder auch mit
source ~/.bashrc
kann man sodann mit:
sc -?
kontrollieren ob alles geklappt hat. Die Ausgabe sollte folgendermaßen aussehen.

Da ich Tätigkeiten auf vielen verschiedenen Servern zu erledigen habe rufe ich nun Morgens Screen mehrmals auf.
sc
und disconnecte die offene Screen-Sitzung mit der Tastenkombination
STRG+a+d
.
Diesen Vorgang wiederhole ich mehrmals um mehrere Screen-Sizungen offen zu haben und rufe bei ausreichender Anzahl von Screen-Sitzungen
sc -r
auf.

Jedesmal wenn ich nun eine Screen-Sizung verlasse fragt er mich nun nach der Nummer für die naechste Sitzung bis ich Abends
CODE: ALLES AUSWÄHLEN
q
fuer quit druecke.
Ich hoffe diese Anleitung erleichtert jemand das tägliche Leben und das arbeiten in der Shell ![]()
Getestet in Debian basierenden Distributionen.
Verfasst von ®eini123

            
            
Noch keine Reaktion