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