[mdk-re] User remains logged on to pts/0 after exiting X :-(

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_lic145=2Ekiev=2Eua?=
Пн Сен 24 14:40:20 MSD 2001


On Sun, Sep 23, 2001 at 11:13:47PM +0400, HB wrote:
> Alt-F7, то мы видим пустой черный экран с мигающим на нем курсором (т. е.
> это текстовый режим). Такое ощущение, что там еще "что-то осталось", в
man deallocvt :)

Кстати, в аттаче startx имени меня лениваго, которому лень было
выяснять, на какой VT надо сделать новый ("какой?") DISPLAY.

Поэтому упомянутый скрипт делает это за меня и мою сестренку.
С tmp он относится вроде бережно. На танцы с umask в районе 
# protect logfile
моей паранойи не хватило.

-- 
WBR, Michael Shigorin, webmaster of www.chem.univ.kiev.ua
>Home Page:  http://visa.chem.univ.kiev.ua/~mike/  ICQ: 113344029
>Brainbench: http://www.brainbench.com/transcript.jsp?pid=2434729
----------- следующая часть -----------
#!/bin/sh
#
# (c) 1999 Red Hat Software, Inc.
# patched by Michael Shigorin <mike на lic145.kiev.ua>
# to open new displays automagically

bindir=/usr/X11R6/bin

userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/etc/X11/xinit/xinitrc
sysserverrc=/etc/X11/xinit/xserverrc
clientargs=""
serverargs=" -quiet "

TMPDIR=${TMPDIR:-/tmp}

if [ -f $userclientrc ]; then
    clientargs=$userclientrc
else if [ -f $sysclientrc ]; then
    clientargs=$sysclientrc
  fi
fi

if [ -f $userserverrc ]; then
    serverargs=$userserverrc
else if [ -f $sysserverrc ]; then
    serverargs=$sysserverrc
  fi
fi

# select next free display...
if [ -n "`ls /tmp/.X*-lock 2>/dev/null`" ]; then
	display=:$[1+0$(ls /tmp/.X*-lock | tail -1 | sed -n 's/.*X\([[:digit:]]\+\)-lock$/\1/p')]
else
	display=:0
fi

whoseargs="client"
while [ "x$1" != "x" ]; do
    case "$1" in
	/''*|\.*)	if [ "$whoseargs" = "client" ]; then
		    if [ "x$clientargs" = x ]; then
			clientargs="$1"
		    else
			clientargs="$clientargs $1"
		    fi
		else
		    if [ "x$serverargs" = x ]; then
			serverargs="$1"
		    else
			serverargs="$serverargs $1"
		    fi
		fi ;;
	--)	whoseargs="server" ;;
	*)	if [ "$whoseargs" = "client" ]; then
		    clientargs="$clientargs $1"
		else
    		    case "$1" in
		        :[0-9]) display="$1"
		        ;;
                        *) serverargs="$serverargs $1"
			;;
		    esac
		fi ;;
    esac
    shift
done

# set up default Xauth info for this machine
mcookie=`mcookie`
serverargs="$serverargs -auth $HOME/.Xauthority"
xauth add $display . $mcookie
xauth add `hostname -f`$display . $mcookie

# remember which VC will be occupied by X to deallocvt it later
XINITLOG="$TMPDIR"/.startx-$HOSTNAME$display
while [ -e "$XINITLOG" ]; do
	XINITLOG="$TMPDIR"/.startx-$HOSTNAME$display-$RANDOM
done

# protect logfile
>"$XINITLOG"
chmod 600 "$XINITLOG"

xinit $clientargs -- $display $serverargs  2>&1 | tee -a "$XINITLOG"

# clean up
deallocvt $(sed -n -e 's/^(using VT number \([[:digit:]]\+\))/\1/p' "$XINITLOG") 2>/dev/null
rm -f "$XINITLOG"


Подробная информация о списке рассылки community