Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как установить из скрипта, запущен X server или нет?

35K
13 марта 2008 года
Jacob_Solodovich
5 / / 13.03.2008
Привет.

Мне необходимо из Баш скрипта понять, есть в системе запущеный Икс сервер или его нет. Хотелось бы услышать советы о том как это сделать _правильным_ способом.

Что то вроде:
 
Код:
X=`ps ax|awk '$5 ~ /X/ {print $5}' `

можно сделать, но хотелось бы что нибудь по лучше. Если есть какие то соображения по этому поводу, поделитесь.

ЯС
2
14 марта 2008 года
squirL
5.6K / / 13.08.2003
я думаю правильнее будет - почитать ман, посмотреть, какие файлы создает Xorg при старте и проверять их наличие. этим вопросом как то не задавался, но предполагаю, что это нечто в /tmp или /var/run
251
15 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Или типа .x0-lock
502
26 марта 2008 года
Jail
550 / / 30.01.2007
Приветствую Вас! Можно попробовать что-то типа ->
Код:
#!/bin/bash
#
# chkconfig: - 91 35
# description: Starts and stops vncserver. \
#           used to provide remote X administration services.

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/sysconfig/vncservers ] && . /etc/sysconfig/vncservers

prog=$"VNC server"

start() {
    echo -n $"Starting $prog: "
    ulimit -S -c 0 >/dev/null 2>&1
    RETVAL=0
    if [ ! -d /tmp/.X11-unix ]
    then
        mkdir -m 1777 /tmp/.X11-unix || :
        restorecon /tmp/.X11-unix 2>/dev/null || :
    fi
    NOSERV=1
    for display in ${VNCSERVERS}
    do
        NOSERV=
        echo -n "${display} "
    unset BASH_ENV ENV
    DISP="${display%%:*}"
    export USER="${display##*:}"
    export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
        runuser -l ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
        RETVAL=$?
        [ "$RETVAL" -ne 0 ] && break
    done
    if test -n "$NOSERV"; then echo -n "no displays configured "; fi
    [ "$RETVAL" -eq 0 ] && success $"vncserver startup" || \
        failure $"vncserver start"
    echo
    [ "$RETVAL" -eq 0 ] && touch /var/lock/subsys/vncserver
}

stop() {
    echo -n $"Shutting down $prog: "
    for display in ${VNCSERVERS}
    do
        echo -n "${display} "
    unset BASH_ENV ENV
    export USER="${display##*:}"
    runuser ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
    done
    RETVAL=$?
    [ "$RETVAL" -eq 0 ] && success $"vncserver shutdown" || \
        failure $"vncserver shutdown"
    echo
    [ "$RETVAL" -eq 0 ] && rm -f /var/lock/subsys/vncserver
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    stop
    sleep 3
    start
    ;;
  condrestart)
    if [ -f /var/lock/subsys/vncserver ]; then
        stop
        sleep 3
        start
    fi
    ;;
  status)
    status Xvnc
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    exit 1
esac

Если хорошо соображаете в Shell-скриптинге, то можете в легкую переделать под свои нужды ;)
38K
04 апреля 2008 года
copy_if_rezo
2 / / 03.04.2008
Ага, запускается ли скрипт из окружения X server'а и
может ли его использовать как правило узнают по переменной
DISPLAY.

О том запущен X server на данном хосте или нет
данная переменная однозначно не говорит - скрипт может
успешно использовать его удалённо, либо быть
запущен при рабочем X server'е, но т.н. в текстовой консоли.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог