вторник, 22 апреля 2008 г.

upstart, x11vnc

В последних сборках Ubuntu и Debian включен Xorg 7.3, и любимый мной vnc.so там не работает. Ну а няньчить пользователей тем не менее людям надо. Для решения проблемы в Hardy использовал upstart:

# x11vnc
#
# X11VNC start event
#

description "x11vnc starter"
author "Mihail Krivushin "

start on kdm-started
stop on kdm-stopped

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6


console output

pre-start script
DAEMON="x11vnc"
a=`ps -ef | grep $DAEMON | wc -l`
if [a gt 1]; then
killall $DAEMON 2> /dev/null
fi
exit 0
end script

script
DAEMON="x11vnc -rfbauth /путь к файлу/vncpasswd -display :0 -auth `find /var/run/xauth/ -type f` -noxfixes -o /var/log/vnc.log"
$DAEMON
exit 0
end script

post-stop script
DAEMON="x11vnc"
a=`ps -ef | grep $DAEMON | wc -l`
if [a gt 1]; then
killall $DAEMON 2> /dev/null
fi
exit 0
end script

respawn

В /etc/init.d/kdm пришлось вставить initctl emit kdm-started и initctl emit kdm-stopped. Код конечно не причесаный, зато работает, да и вообще я python знаю намного лучше чем bash. Upstart полезная вещь!

2 комментария:

GQ комментирует...

if [a gt 1]; - работать не будет.
правильно
if [ a -gt 1 ];

если, конечно, я правильно понимаю, и это шелл.

Deepwalker комментирует...

По видимому вы правы, тогда получается, что pre- и post- можно выкинуть. Надо будет разобраться с отладкой у upstart, а то пока только методом тыка получалось - работает значит хорошо : )