Автоматическое закрытие простаивающих сессий NX (отрезано от "Курощения")

Модераторы: dimbor, Модераторы разделов

Ответить
SchurinUE
Сообщения: 24
ОС: ubuntu

Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Доброго времени суток. :)

Уважаемые гуру подскажите как сделать автоматическое закрытие простаивающих сессий NX по таймауту.
В документации по RX написано следующее:

"... Для ликвидации простаивающих и занимающих память сервера сессий предусмотрен скрипт, выполняющийся по расписанию.
Для его включения измените конфигурационные параметры в файле /etc/sysconfig/freenx-server таким образом:
SESSION_TTL=3600
Это устанавливает максимальное время жизни для простаивающей сессии сроком в один час. ..."

У себя ни такого каталога, ни файла не нашел ... потому и спрашиваю (речь идет о ubuntu 8.04 + freenx-server_0.7.4-eter22 и nx_3.4.0-eter8).
Заранее спасибо.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение dimbor »

SchurinUE писал(а):
18.06.2010 00:36
У себя ни такого каталога, ни файла не нашел ... потому и спрашиваю (речь идет о ubuntu 8.04 + freenx-server_0.7.4-eter22 и nx_3.4.0-eter8).

Можно сделать rpm -ql freenx-server и нужный Вам файл наверняка найдется, хотя бы методом перебора.
Спасибо сказали:
Xandry
Сообщения: 980
ОС: openSUSE
Контактная информация:

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение Xandry »

/etc/sysconfig/ это для rpm-based систем. Поищите у себя как-нибудь так:
$ find /etc/ -name *freenx*
или даже так (могу путать опцию):
$ dpkg -c freenx-server_0.7.4-eter22.deb
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Нашел я этот файл аж в двух местах:
/etc/logrotate.d/ (судя по содержимому относится к параметрам файла логов nx: размер, место нахождения и т.п.)
и второй
/etc/init.d/
следующего содержания:

Код: Выделить всё

#!/bin/bash
#
# chkconfig: 2345 95 15
# description: Starts and stops the FreeNX service
# processname: nxserver

### BEGIN INIT INFO
# Provides:          freenx_server
# Required-Start:    sshd
# Required-Stop:     sshd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: FreeNX Server
# Description:       Cleanup FreeNX Server session database at boot time
### END INIT INFO

# Read the config file

. $(PATH=$(cd $(dirname $0) && pwd):$PATH which nxloadconfig) --
SERVNAME=`basename $0`
AUTH_NAME=$NX_HOME_DIR/.ssh/$SSH_AUTHORIZED_KEYS
#LOCKFILE=/var/lock/subsys/$SERVNAME
LOCKFILE=/var/lock/$SERVNAME
OUTFORMAT=/etc/init.d/outformat
[ -x $OUTFORMAT ] || OUTFORMAT=/etc/init.d/$SERVNAME.outformat
if which tput >/dev/null && test -x $OUTFORMAT; then
        . $OUTFORMAT
else
        MOVE_TO_COL(){ :; }
        SETCOLOR_SUCCESS(){ :; }
        SETCOLOR_FAILURE(){ :; }
        SETCOLOR_WARNING(){ :; }
        SETCOLOR_NORMAL(){ :; }
fi

success()
{
        MOVE_TO_COL
        echo -n '[ '
        SETCOLOR_SUCCESS
        echo -n 'DONE'
        SETCOLOR_NORMAL
        echo ' ]'
}

failure()
{
        MOVE_TO_COL
        echo -n '['
        SETCOLOR_FAILURE
        echo -n 'FAILED'
        SETCOLOR_NORMAL
        echo ']'
}

passed()
{
        MOVE_TO_COL
        echo -n '['
        SETCOLOR_WARNING
        echo -n 'PASSED'
        SETCOLOR_NORMAL
        echo ']'
}

start()
{
    #check for first run
    [[ ! ( -e "$AUTH_NAME" ) && ! ( -e "$AUTH_NAME.disabled" ) ]] && $PATH_BIN/nxsetup --install --setup-nomachine-key --auto
    echo -n $"Starting $SERVNAME service: "
    if [ -e $LOCKFILE ]; then
        passed
        exit 1
    fi
        [ ! -d "/tmp/.X11-unix" ] && mkdir -m1755 /tmp/.X11-unix/
        $PATH_BIN/nxserver --cleanup > /dev/null 2>&1
        $PATH_BIN/nxserver --start > /dev/null 2>&1
        #status_cmd
        ret=`$PATH_BIN/nxserver --status | grep 'run' | wc -l`
        if [ $ret -eq 1 ]; then
            touch $LOCKFILE
            success
        else
            failure
        fi
}

stop()
{
    echo -n $"Stopping $SERVNAME service: "
    if [ -e $LOCKFILE ]; then
        $PATH_BIN/nxserver --stop > /dev/null 2>&1
        $PATH_BIN/nxserver --cleanup > /dev/null 2>&1
        ret=`$PATH_BIN/nxserver --status | grep 'run' | wc -l`
        if [ $ret -eq 0 ]; then
            rm -f $LOCKFILE
            success
        else
            failure
        fi
    else
        passed
    fi
}

case "$1" in
    start)
        start
;;
    stop)
        stop
;;
    restart)
        stop
        start
;;
    condrestart)
        if [ -e $LOCKFILE ]; then
        stop
        start
        fi
;;
    condstop)
        if [ -e $LOCKFILE ]; then
        stop
        fi
;;
    status)
        $PATH_BIN/nxserver --status
;;
    setup)
        $PATH_BIN/nxsetup --install
;;
    check)
        $PATH_BIN/nxsetup --test
;;
    *)
        echo "Usage: $0 <start|stop|restart|condrestart|condstop|status|setup|check>"
;;
esac

Ламерский вопрос - куда писать SESSION_TTL=3600.

И еще один вопрос:
Мне изначально нужно было, чтобы убивались "болтающиеся" приостановленные сессии (которые видны через диспетчер сессий), а не те что активны и у которых человек пошел пообедать ... Может быть это решается как то по другому. Если так поправьте меня ...

Кроме того в мануале RX написано, что команда:
nxserver --list
даст список активных сессий ....
У меня возвращает следующее:
NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.3.0)
Usage: nxserver <option>
--passwd: Change password
и более ничего ... Почему?
Спасибо за отклики ... неожидал что так скоро получу ответ :)
Спасибо сказали:
lira63
Сообщения: 19

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение lira63 »

nxserver --list
Мне удалось получить список активных сессий только под рутом. А под юзером - выдаёт как и у тебя.
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Однако! Ты прав! Под рутом все ок!

А что по поводу автозавершения "зависших" сессий?
Спасибо сказали:
lira63
Сообщения: 19

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение lira63 »

SchurinUE писал(а):
18.06.2010 11:50
Однако! Ты прав! Под рутом все ок!
А что по поводу автозавершения "зависших" сессий?

Тоже не знаю куда вставить... Вообще я ручками делаю через nxadmin, поэтому особо не напрягает (есть удаленный доступ даже из дома). Но что в твоём случае делать - не знаю честно.
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Значит проблема "болтающихся" сессий имеет место быть ...

Так бы все хорошо, да вот только иногда 1С8.1 нет-нет да и зависнет (по известным только ей причине) ... пользователь конечно же её крестиком ... БАЦ!
А потом подключается и у него автоматом клиент цепляется за эту "висячую" сессию .
Итог смотрит он в белое окно ....

Звонит мне и надрывающимся голосом рвущим перепонки просит убрать эту сессию ... я тоже удаленно могу её резануть (и тогда он входит спокойно), но лучше бы было если она автоматом по истечении 5-10 минут бездействия сама закрывалась.

Понятно, что можно отключить в известном всем файле автоконнект к сессиям, НО тогда тетеньки (которые могут БАЦАТЬ по крестику) будут звонить и спрашивать что им делать и что нажимать ... при этом количество звонков (как мне кажется) возрастет в геометрической прогрессии ... короче батарейка(см.терпение) кончиться раньше рабочего дня ... а они у меня не одни ...

Вот.
Спасибо сказали:
lira63
Сообщения: 19

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение lira63 »

SchurinUE писал(а):
18.06.2010 12:27
Значит проблема "болтающихся" сессий имеет место быть ...

У меня 1с 7.7. Дык в nxadmin'e нередко вижу сессии "suspend" (это и есть болтающиеся сессии?), но юзеры заходят без проблем повторно, даже если я эти сессии и не убиваю. Очень редко приходится убивать, когда войти не могут, буквально единичные случаи. Поэтому особо не напрягает. Кстати я использую Desktop, не рутлесс.
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

У меня все в rootless-е работают, иногда пользователю удается зайти открыв новую сессию, а иногда цепляется сессия с зависшей 1С-кой, соответственно ее приходится килять ... чтобы вновь ему дать зайти.

Как, кстати, можно получить через скрипт список таких сессий и соответственно прибить их ... тогда можно будет его повесить на cron и каждые 5 минут (на пример) резать их.

Кстати, сегодня заметил что некоторые такие сессии хватают одно из ядер проца и грузят его на все 100% двумя процессами 1С8 и wineserver от имени того пользователя у которого сессия подвисла ... Тоже не приятно, однако. Приходится убивать, но в ручную утомительно следить за всем ...
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Ребят может подскажите команду для удаления конкретной сессии:
есть команда nxserver --cleanup для очистки всех сессий

А как срубить одну кокретную???
Спасибо сказали:
dimontv
Сообщения: 19

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение dimontv »

sudo nxserver --terminate Пользователь или идентификатор сессии
а вообще sudo nxserver --help
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Да-да-да ... неуспел задать вопрос как сам на него ответил и сюда запостить не успел ....
Вот только как бы эти сессии научиться килять автоматом ... Сегодня пару раз уже убивал сессию одного и тогоже правда пользователя ...
Она висит как suspended ... возникает после того как 1C8.1 в wine ругается на ошибку про запись дампа ... и при очередном подключении пользователь цепляется именно за эту недобитую сессию, итог - черный (белый) rootless экран.
Её прибьёшь и user снова может цепляться в rootless и работать дальше.
Может кто поможет?
Ну руками блин ... непрёт убирать их ...
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Ну раз народ ... упорно отмалчивается (ехидно надсмехаясь над чужими проблемами ...) :angry:
Окучил (не без помощи Гугла ...) скрипт следующего содержания, который и повесил на cron (от лица root-а)

Код: Выделить всё

#!/bin/bash

SESSION_TTL=${SESSION_TTL:-120}
nxdir="/var/lib/nxserver/db/running"
nxserver="/usr/bin/nxserver"
if [ -d "$nxdir" -a $SESSION_TTL -gt 0 ]; then
  for f in `ls $nxdir`; do
    sessiontype=`cat $nxdir/$f | grep status | cut -d= -f2`
    user=`cat $nxdir/$f | grep userName | cut -d= -f2`
    sessiontime=`cat $nxdir/$f | grep creationTime | cut -d= -f2`
    sessionid=`cat $nxdir/$f | grep sessionId | cut -d= -f2`
    criticaltime=$(expr `date +%s` - $SESSION_TTL)
    if [ $sessiontime -lt $criticaltime ]; then
        if [ $sessiontype = "Suspended" ]; then
            $nxserver --terminate $sessionid
        fi
    fi
  done
fi


Сие творение просматривает список сессий и ежли там имеются таковые со статусом suspending и более старые чем 120 секунд - режет их беспощадно ...
Завтра проверю на бабах ... авось прокатит ... :crazy:

НО , мне почему-то казалось (изначально), что это должно быть куда проще - что-то вроде ключа в конфиге или аналогично ... А так, блин лечение гланд через известное место больного ... Но никто мне не подсказал ... э-эх!
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение dimbor »

SchurinUE писал(а):
21.06.2010 23:34
Ну раз народ ... упорно отмалчивается (ехидно надсмехаясь над чужими проблемами ...) :angry:

Народ заманался над своими проблемами смеяться, куда ему еще чужие. Да и того народа - полторы калеки.

Раньше подступались к аналогичному. Видимо было неактуальным.
Посоветовать могу анализ исполняемых файлов пакета freenx (у меня /usr/bin/nx*). Это сплошь скрипты, надо Вам сказать. И их можно править.
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение Djelf »

SchurinUE писал(а):
21.06.2010 23:34
Окучил (не без помощи Гугла ...) скрипт следующего содержания, который и повесил на cron (от лица root-а)

Так лаконичнее:

Код: Выделить всё

nxserver --history|grep Suspended| awk '{print "nxserver --terminate ",$2}' | sh

Хотя ttl и не проверяет...
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

Кстати, на бабах испытания прошли удачно ... :drunk:

Теперь не звонят так часто ... но просят решить проблему с выпадением 1С8.1 "на запись в дамп ..." после чего эти сессии и появлялись ...
НО, если раньше мне приходилось к ним подключаться, и добивать не добитые сессии ... то теперь они лишний раз могут 3 минуты посмотреться в зеркальце ... и снова влиться в работу.

Да и того народа - полторы калеки.

Много уважаемый Dimbor, мне кажется вы слегка лукавите ... ;)

А вот за ссылочку спасибо ... на денек бы ее пораньше ... И почему она у меня сразу не нашлась ... :blush:

Нет ... ну поглядите не успел ответ написать ... как тут Djelf делает контрольный в голову ... А ведь и правда какой смысл проверять ttl если со следующим заходом все равно пойдет под нож ...

Нет! Все таки они сидят и усмехаются ... :ph34r:
Ну ничё что то новенькое узнал - тоже хорошо ... :)
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение bsavelev »

этот скрипт из пакета freenx-server
http://git.altlinux.org/people/boris/packa...b848cdf;hb=HEAD

этот скрипт должен быть в пакете и кладется в %_sysconfdir/cron.hourly
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

У себя не нашел и изначально он не работал - сессии болтались ... см. выше.
Поэтому пришлось доводить вручную ...
Спасибо сказали:
bsavelev
Сообщения: 231
ОС: Debian

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение bsavelev »

в rpm системах файл есть и все работает. давайте разбираться что у вас было нет так. если хотите, конечно
Спасибо сказали:
SchurinUE
Сообщения: 24
ОС: ubuntu

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение SchurinUE »

bsavelev

Не хочу показаться дерзким, но все было написано выше ... ;)
в etersoft-е было написано исправить TTL там-то и там-то ... но его я не нашел ...
Из ситуации вышел, опять-же, вышеуказанным способом ....

Щас раздражает только выпадение 8.1 в ошибку записи дампа ... но это я так понял решается с поднятием версии wine до 1.0.12, а у нас 1.0.9. Вот!
Был бы благодарен если бы подсказали как это побороть в имеющемся wine. И хотелось бы верить что еще что-нибудь не всплывет ...
Вон, уважаемый Dimbor уже "устал смеяться", что же касается простых смертных ...
(censored])

С уважением, Юрий.

!Предупреждение от модератора Hoblin
Юрий, честность у нас наказуема. Пожалуйста, не занимайтесь на этом форуме обсуждением вареза, нарушая тем самым Правила форума, п. 3.9.
О законном тестировании WINE@Etersoft могу разъяснить в личке, если не найдёте соответствующих обсуждений на форуме.
Спасибо сказали:
whoim
Сообщения: 91
ОС: CentOS 5.4 X64

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение whoim »

Кстати после обнволения freenx-server до
Version : 0.7.4
Release : eter23centos
появился этот самый механизм убивания сессий. В итоге сессия висит в nxadmin, удалить ее НЕ получается

Код: Выделить всё

rm: невозможно удалить `/tmp/.X0-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1009-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1029-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1032-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1039-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1048-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1049-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1051-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X1056-lock': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X0': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1009': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1029': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1032': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1039': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1048': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1049': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1051': Операция не позволяется
rm: невозможно удалить `/tmp/.X11-unix/X1056': Операция не позволяется
mv: невозможно выполнить stat для `/home/master1c/.nx/C-server-a-*-22366DF4DEE368F256D6BEF3EE13889F/': Нет такого файла или каталога


клиент при resume видит сначала "session startup failed" , далее сессия закрывается и он создает новую..
Спасибо сказали:
whoim
Сообщения: 91
ОС: CentOS 5.4 X64

Re: Автоматическое закрытие простаивающих сессий NX

Сообщение whoim »

И еще. Скрипт нормально заработал после смены

Код: Выделить всё

#SESSION_TTL=${SESSION_TTL:-3600}
SESSION_TTL=3600

Спасибо сказали:
Ответить