PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prozesse wiederholen



Andreas Urban
03.02.10, 14:35
Folgendes Problem hab ich.
Ich hab mich über VPN bei einem Bekannten eingewählt.
Mit Putty öffnete ich zwei Terminalfenster.
Nach kurzer Zeit brach die Internetverbindung ab und ich mußte mich neu einwählen.
Mit 'who' konnte ich sehen, das die anderen Sitzungen noch geöffnet sind.
Da dort Programme laufen ist es schon wichtig, das ich wieder die Anzeige sehe.
Welche Möglichkeit habe ich diese Sitzungen wieder zu meinen eigenen zu machen?

Kann mir jemand einen Tip geben?

Besten Dank im vorraus.

marce
03.02.10, 15:20
wenn die nicht mit screen gestartet wurden - soweit ich weiß gar keine.

derRichard
03.02.10, 22:22
"saubere" lösung weiss ich keine auf die schnelle.
es gibt diverse methoden um ein fremdes pty zu übernehmen.
eventuell spuckt google zum thema etwas aus.
unix rechtlich sollte das ja gehen... :D

//richard

cane
03.02.10, 22:46
Der Tipp ist somit: Verwende "screen" :)

mfg
cane

HBtux
03.02.10, 22:59
Wie Du die aktuelle Session wieder holst, weiß ich nicht.....

Für die Zukunft habe ich Dir aber ein cooles Screen-Script...
(das spendiere ich Heute zur Feier des Tages...) ;)

Funktion:

Beim ersten Mal aufrufen wird eine neue Screen-Session gestartet. (wenn es noch keine Detached-Screen-Session gibt)
Wenn es bereits eine Detached-Screen gibt, bekommst Du ein Auswahlmenü eingeblendet, mit dem Du Dich einfach durch Eingabe der Menü-Ziffer auf die Screen Reconnecten kannst oder noch eine weitere Screen erzeugen kannst....
- Zum Test Script aufrufen und Menü-Punkt 1 wählen.
- Dann in der Screen-Session "top" starten und die Screen mit "STRG" + "a" + "d" drücken....
Die angezeigten Screen-Namen sind immer im gleichen Format aufgebaut.
Aus dem Namen lässt sich die PID und das Anmelde-Datum erkennen.

Zukünftig einfach nach dem Login auf dem Server gleich mal das Script "s_menu.sh" starten und immer in einer Screen arbeiten.

Beispiel:



Screen-Menue (HBtux)

Reconnect auf offene Session, neue Session oder Abmelden?
1) Neue 'Screen'-Session
2) Keine Screen-Session (Menue beenden)
3) 4775.Mi_03.02._23:43_(HBtux)
4) 30196.Mi_03.02._23:56_(HBtux)
Bitte einen Menüpunkt wählen.



Script: s-menu.sh


#
# s-menu.sh
# 2006 - from HBtux
#

CLEAR="clear"
while getopts cr option 2>/dev/null
do
case $option in
c) CLEAR="";;
r) RECALL="recall";;
\?) fehler;;
esac

done


ende_screen_menue() {
#sleep 1
NO_SCREEN=`screen -ls | grep "No Sockets found"`
if [ "$NO_SCREEN" = "No Sockets found" ]; then
break
else
DETACHED=`screen -ls | grep "(Detached)"`
if [ "$DETACHED" = "" ]; then
#screen_name
#exec screen -l -S $SCREEN_NAME
break
exit 0
else
$0
break
fi
fi
}


screen_name() {
SCREEN_NAME="`date '+%a_%d.%m._%H:%M'`_($LOGNAME)"
}

neue_screen() {
screen_name
screen -l -S $SCREEN_NAME
$0 #screen_menue.sh noch mal starten
exit 0
}

neue_screen_e() {
screen_name
screen -l -S $SCREEN_NAME
$0 -r
exit 0
}



NO_SCREEN=`screen -ls | grep "No Sockets found"`
if [ "$NO_SCREEN" = "No Sockets found" ]; then

if [ "$RECALL" = "recall" ]; then
exit 0
fi

neue_screen_e

else

DETACHED=`screen -ls | grep "(Detached)"`

if [ "$DETACHED" = "" ]; then
if [ "$RECALL" = "recall" ]; then
exit 0
fi
echo ""
echo "Keine Session zum Verbinden gefunden. ($LOGNAME)"
sleep 1
neue_screen_e
else

$CLEAR


echo " "
tput rev
echo " Screen-Menue ($LOGNAME) "
tput sgr0
echo " "
echo "Reconnect auf offene Session, neue Session oder Abmelden? "
PS3="Bitte einen Menüpunkt wählen. "
LISTE_SCREEN=`screen -ls | grep "Detached"| cut -d" " -f2|grep -v "There are"|grep -vE "Socket in|Sockets in"|grep "^[0-9]"`
select i in "Neue 'Screen'-Session" "Keine Screen-Session (Menue beenden)" $LISTE_SCREEN; do
case $i in
"Neue 'Screen'-Session") neue_screen
ende_screen_menue
break;;
"Keine Screen-Session (Menue beenden)") break ; break ; exit 0 ;;
*) screen -r $i
ende_screen_menue
break
;;
esac
done
fi
fi


exit 0