Автоматическое закрытие простаивающих сессий NX (отрезано от "Курощения")
Модераторы: dimbor, Модераторы разделов
Автоматическое закрытие простаивающих сессий NX
Доброго времени суток.
Уважаемые гуру подскажите как сделать автоматическое закрытие простаивающих сессий NX по таймауту.
В документации по RX написано следующее:
"... Для ликвидации простаивающих и занимающих память сервера сессий предусмотрен скрипт, выполняющийся по расписанию.
Для его включения измените конфигурационные параметры в файле /etc/sysconfig/freenx-server таким образом:
SESSION_TTL=3600
Это устанавливает максимальное время жизни для простаивающей сессии сроком в один час. ..."
У себя ни такого каталога, ни файла не нашел ... потому и спрашиваю (речь идет о ubuntu 8.04 + freenx-server_0.7.4-eter22 и nx_3.4.0-eter8).
Заранее спасибо.
Уважаемые гуру подскажите как сделать автоматическое закрытие простаивающих сессий NX по таймауту.
В документации по RX написано следующее:
"... Для ликвидации простаивающих и занимающих память сервера сессий предусмотрен скрипт, выполняющийся по расписанию.
Для его включения измените конфигурационные параметры в файле /etc/sysconfig/freenx-server таким образом:
SESSION_TTL=3600
Это устанавливает максимальное время жизни для простаивающей сессии сроком в один час. ..."
У себя ни такого каталога, ни файла не нашел ... потому и спрашиваю (речь идет о ubuntu 8.04 + freenx-server_0.7.4-eter22 и nx_3.4.0-eter8).
Заранее спасибо.
Re: Автоматическое закрытие простаивающих сессий NX
/etc/sysconfig/ это для rpm-based систем. Поищите у себя как-нибудь так:
$ find /etc/ -name *freenx*
или даже так (могу путать опцию):
$ dpkg -c freenx-server_0.7.4-eter22.deb
$ find /etc/ -name *freenx*
или даже так (могу путать опцию):
$ dpkg -c freenx-server_0.7.4-eter22.deb
Re: Автоматическое закрытие простаивающих сессий NX
Нашел я этот файл аж в двух местах:
/etc/logrotate.d/ (судя по содержимому относится к параметрам файла логов nx: размер, место нахождения и т.п.)
и второй
/etc/init.d/
следующего содержания:
Ламерский вопрос - куда писать 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
и более ничего ... Почему?
Спасибо за отклики ... неожидал что так скоро получу ответ
/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
и более ничего ... Почему?
Спасибо за отклики ... неожидал что так скоро получу ответ
Re: Автоматическое закрытие простаивающих сессий NX
nxserver --list
Мне удалось получить список активных сессий только под рутом. А под юзером - выдаёт как и у тебя.
Мне удалось получить список активных сессий только под рутом. А под юзером - выдаёт как и у тебя.
Re: Автоматическое закрытие простаивающих сессий NX
Однако! Ты прав! Под рутом все ок!
А что по поводу автозавершения "зависших" сессий?
А что по поводу автозавершения "зависших" сессий?
Re: Автоматическое закрытие простаивающих сессий NX
Тоже не знаю куда вставить... Вообще я ручками делаю через nxadmin, поэтому особо не напрягает (есть удаленный доступ даже из дома). Но что в твоём случае делать - не знаю честно.
Re: Автоматическое закрытие простаивающих сессий NX
Значит проблема "болтающихся" сессий имеет место быть ...
Так бы все хорошо, да вот только иногда 1С8.1 нет-нет да и зависнет (по известным только ей причине) ... пользователь конечно же её крестиком ... БАЦ!
А потом подключается и у него автоматом клиент цепляется за эту "висячую" сессию .
Итог смотрит он в белое окно ....
Звонит мне и надрывающимся голосом рвущим перепонки просит убрать эту сессию ... я тоже удаленно могу её резануть (и тогда он входит спокойно), но лучше бы было если она автоматом по истечении 5-10 минут бездействия сама закрывалась.
Понятно, что можно отключить в известном всем файле автоконнект к сессиям, НО тогда тетеньки (которые могут БАЦАТЬ по крестику) будут звонить и спрашивать что им делать и что нажимать ... при этом количество звонков (как мне кажется) возрастет в геометрической прогрессии ... короче батарейка(см.терпение) кончиться раньше рабочего дня ... а они у меня не одни ...
Вот.
Так бы все хорошо, да вот только иногда 1С8.1 нет-нет да и зависнет (по известным только ей причине) ... пользователь конечно же её крестиком ... БАЦ!
А потом подключается и у него автоматом клиент цепляется за эту "висячую" сессию .
Итог смотрит он в белое окно ....
Звонит мне и надрывающимся голосом рвущим перепонки просит убрать эту сессию ... я тоже удаленно могу её резануть (и тогда он входит спокойно), но лучше бы было если она автоматом по истечении 5-10 минут бездействия сама закрывалась.
Понятно, что можно отключить в известном всем файле автоконнект к сессиям, НО тогда тетеньки (которые могут БАЦАТЬ по крестику) будут звонить и спрашивать что им делать и что нажимать ... при этом количество звонков (как мне кажется) возрастет в геометрической прогрессии ... короче батарейка(см.терпение) кончиться раньше рабочего дня ... а они у меня не одни ...
Вот.
Re: Автоматическое закрытие простаивающих сессий NX
У меня 1с 7.7. Дык в nxadmin'e нередко вижу сессии "suspend" (это и есть болтающиеся сессии?), но юзеры заходят без проблем повторно, даже если я эти сессии и не убиваю. Очень редко приходится убивать, когда войти не могут, буквально единичные случаи. Поэтому особо не напрягает. Кстати я использую Desktop, не рутлесс.
Re: Автоматическое закрытие простаивающих сессий NX
У меня все в rootless-е работают, иногда пользователю удается зайти открыв новую сессию, а иногда цепляется сессия с зависшей 1С-кой, соответственно ее приходится килять ... чтобы вновь ему дать зайти.
Как, кстати, можно получить через скрипт список таких сессий и соответственно прибить их ... тогда можно будет его повесить на cron и каждые 5 минут (на пример) резать их.
Кстати, сегодня заметил что некоторые такие сессии хватают одно из ядер проца и грузят его на все 100% двумя процессами 1С8 и wineserver от имени того пользователя у которого сессия подвисла ... Тоже не приятно, однако. Приходится убивать, но в ручную утомительно следить за всем ...
Как, кстати, можно получить через скрипт список таких сессий и соответственно прибить их ... тогда можно будет его повесить на cron и каждые 5 минут (на пример) резать их.
Кстати, сегодня заметил что некоторые такие сессии хватают одно из ядер проца и грузят его на все 100% двумя процессами 1С8 и wineserver от имени того пользователя у которого сессия подвисла ... Тоже не приятно, однако. Приходится убивать, но в ручную утомительно следить за всем ...
Re: Автоматическое закрытие простаивающих сессий NX
Ребят может подскажите команду для удаления конкретной сессии:
есть команда nxserver --cleanup для очистки всех сессий
А как срубить одну кокретную???
есть команда nxserver --cleanup для очистки всех сессий
А как срубить одну кокретную???
Re: Автоматическое закрытие простаивающих сессий NX
sudo nxserver --terminate Пользователь или идентификатор сессии
а вообще sudo nxserver --help
а вообще sudo nxserver --help
Re: Автоматическое закрытие простаивающих сессий NX
Да-да-да ... неуспел задать вопрос как сам на него ответил и сюда запостить не успел ....
Вот только как бы эти сессии научиться килять автоматом ... Сегодня пару раз уже убивал сессию одного и тогоже правда пользователя ...
Она висит как suspended ... возникает после того как 1C8.1 в wine ругается на ошибку про запись дампа ... и при очередном подключении пользователь цепляется именно за эту недобитую сессию, итог - черный (белый) rootless экран.
Её прибьёшь и user снова может цепляться в rootless и работать дальше.
Может кто поможет?
Ну руками блин ... непрёт убирать их ...
Вот только как бы эти сессии научиться килять автоматом ... Сегодня пару раз уже убивал сессию одного и тогоже правда пользователя ...
Она висит как suspended ... возникает после того как 1C8.1 в wine ругается на ошибку про запись дампа ... и при очередном подключении пользователь цепляется именно за эту недобитую сессию, итог - черный (белый) rootless экран.
Её прибьёшь и user снова может цепляться в rootless и работать дальше.
Может кто поможет?
Ну руками блин ... непрёт убирать их ...
Re: Автоматическое закрытие простаивающих сессий NX
Ну раз народ ... упорно отмалчивается (ехидно надсмехаясь над чужими проблемами ...)
Окучил (не без помощи Гугла ...) скрипт следующего содержания, который и повесил на cron (от лица root-а)
Сие творение просматривает список сессий и ежли там имеются таковые со статусом suspending и более старые чем 120 секунд - режет их беспощадно ...
Завтра проверю на бабах ... авось прокатит ...
НО , мне почему-то казалось (изначально), что это должно быть куда проще - что-то вроде ключа в конфиге или аналогично ... А так, блин лечение гланд через известное место больного ... Но никто мне не подсказал ... э-эх!
Окучил (не без помощи Гугла ...) скрипт следующего содержания, который и повесил на 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 секунд - режет их беспощадно ...
Завтра проверю на бабах ... авось прокатит ...
НО , мне почему-то казалось (изначально), что это должно быть куда проще - что-то вроде ключа в конфиге или аналогично ... А так, блин лечение гланд через известное место больного ... Но никто мне не подсказал ... э-эх!
Re: Автоматическое закрытие простаивающих сессий NX
Народ заманался над своими проблемами смеяться, куда ему еще чужие. Да и того народа - полторы калеки.
Раньше подступались к аналогичному. Видимо было неактуальным.
Посоветовать могу анализ исполняемых файлов пакета freenx (у меня /usr/bin/nx*). Это сплошь скрипты, надо Вам сказать. И их можно править.
Re: Автоматическое закрытие простаивающих сессий NX
Так лаконичнее:
Код: Выделить всё
nxserver --history|grep Suspended| awk '{print "nxserver --terminate ",$2}' | sh
Хотя ttl и не проверяет...
Re: Автоматическое закрытие простаивающих сессий NX
Кстати, на бабах испытания прошли удачно ...
Теперь не звонят так часто ... но просят решить проблему с выпадением 1С8.1 "на запись в дамп ..." после чего эти сессии и появлялись ...
НО, если раньше мне приходилось к ним подключаться, и добивать не добитые сессии ... то теперь они лишний раз могут 3 минуты посмотреться в зеркальце ... и снова влиться в работу.
Много уважаемый Dimbor, мне кажется вы слегка лукавите ...
А вот за ссылочку спасибо ... на денек бы ее пораньше ... И почему она у меня сразу не нашлась ...
Нет ... ну поглядите не успел ответ написать ... как тут Djelf делает контрольный в голову ... А ведь и правда какой смысл проверять ttl если со следующим заходом все равно пойдет под нож ...
Нет! Все таки они сидят и усмехаются ...
Ну ничё что то новенькое узнал - тоже хорошо ...
Теперь не звонят так часто ... но просят решить проблему с выпадением 1С8.1 "на запись в дамп ..." после чего эти сессии и появлялись ...
НО, если раньше мне приходилось к ним подключаться, и добивать не добитые сессии ... то теперь они лишний раз могут 3 минуты посмотреться в зеркальце ... и снова влиться в работу.
Да и того народа - полторы калеки.
Много уважаемый Dimbor, мне кажется вы слегка лукавите ...
А вот за ссылочку спасибо ... на денек бы ее пораньше ... И почему она у меня сразу не нашлась ...
Нет ... ну поглядите не успел ответ написать ... как тут Djelf делает контрольный в голову ... А ведь и правда какой смысл проверять ttl если со следующим заходом все равно пойдет под нож ...
Нет! Все таки они сидят и усмехаются ...
Ну ничё что то новенькое узнал - тоже хорошо ...
Re: Автоматическое закрытие простаивающих сессий NX
этот скрипт из пакета freenx-server
http://git.altlinux.org/people/boris/packa...b848cdf;hb=HEAD
этот скрипт должен быть в пакете и кладется в %_sysconfdir/cron.hourly
http://git.altlinux.org/people/boris/packa...b848cdf;hb=HEAD
этот скрипт должен быть в пакете и кладется в %_sysconfdir/cron.hourly
Re: Автоматическое закрытие простаивающих сессий NX
У себя не нашел и изначально он не работал - сессии болтались ... см. выше.
Поэтому пришлось доводить вручную ...
Поэтому пришлось доводить вручную ...
Re: Автоматическое закрытие простаивающих сессий NX
в rpm системах файл есть и все работает. давайте разбираться что у вас было нет так. если хотите, конечно
Re: Автоматическое закрытие простаивающих сессий NX
bsavelev
Не хочу показаться дерзким, но все было написано выше ...
в etersoft-е было написано исправить TTL там-то и там-то ... но его я не нашел ...
Из ситуации вышел, опять-же, вышеуказанным способом ....
Щас раздражает только выпадение 8.1 в ошибку записи дампа ... но это я так понял решается с поднятием версии wine до 1.0.12, а у нас 1.0.9. Вот!
Был бы благодарен если бы подсказали как это побороть в имеющемся wine. И хотелось бы верить что еще что-нибудь не всплывет ...
Вон, уважаемый Dimbor уже "устал смеяться", что же касается простых смертных ...
(censored])
С уважением, Юрий.
Не хочу показаться дерзким, но все было написано выше ...
в etersoft-е было написано исправить TTL там-то и там-то ... но его я не нашел ...
Из ситуации вышел, опять-же, вышеуказанным способом ....
Щас раздражает только выпадение 8.1 в ошибку записи дампа ... но это я так понял решается с поднятием версии wine до 1.0.12, а у нас 1.0.9. Вот!
Был бы благодарен если бы подсказали как это побороть в имеющемся wine. И хотелось бы верить что еще что-нибудь не всплывет ...
Вон, уважаемый Dimbor уже "устал смеяться", что же касается простых смертных ...
(censored])
С уважением, Юрий.
! Предупреждение от модератора Hoblin Юрий, честность у нас наказуема. Пожалуйста, не занимайтесь на этом форуме обсуждением вареза, нарушая тем самым Правила форума, п. 3.9.
О законном тестировании WINE@Etersoft могу разъяснить в личке, если не найдёте соответствующих обсуждений на форуме.
Re: Автоматическое закрытие простаивающих сессий NX
Кстати после обнволения freenx-server до
Version : 0.7.4
Release : eter23centos
появился этот самый механизм убивания сессий. В итоге сессия висит в nxadmin, удалить ее НЕ получается
клиент при resume видит сначала "session startup failed" , далее сессия закрывается и он создает новую..
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" , далее сессия закрывается и он создает новую..
Re: Автоматическое закрытие простаивающих сессий NX
И еще. Скрипт нормально заработал после смены
Код: Выделить всё
#SESSION_TTL=${SESSION_TTL:-3600}
SESSION_TTL=3600