<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//RU">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=koi8-r">
 <META NAME="GENERATOR" CONTENT="lfparser_2.19">
 <META NAME="LFCATEGORY" CONTENT="UNIX Basics">
<!-- this is used be a number of tools:
 =LF=AUTHOR: Guido Socher
 =LF=CAT___: UNIX Basics
 =LF=TITLE_: Запуск удаленных приложений в Х11
 =LF=NUMBER: 222
 =LF=ANAME_: article222_htm
 -->
 <TITLE>lf222, UNIX Basics: Запуск удаленных приложений в Х11</TITLE>
<!-- stylesheet added by lfparser: --> 
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-familiy:monospace,Courier }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm ;  text-align:center }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar -->
 <!-- top navegation bar -->
 <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="144"><IMG src="../../common/images/logolftop.gif"
           alt="[LinuxFocus-icon]" width="350" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE width="100%">
               <TR align="right">
                 <TD class="top"><A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="-1">Домой</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="-1">Карта</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="-1">Индекс</FONT></A> &nbsp;|&nbsp; <A class="nodec" href="../Search/index.shtml"><FONT color=
                 "#DDDDDD" size="-1">Поиск</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Новости</FONT></A> </TD>
           <TD><FONT color="#FFFFFF">|</FONT> </TD>
           <TD><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Архивы</FONT></A> </TD>
           <TD><FONT color="#FFFFFF">|</FONT> </TD>
           <TD><A class="nodec" href="../Links/index.shtml"><FONT color=
           "#FFFFFF">Ссылки</FONT></A> </TD>
           <TD><FONT color="#FFFFFF">|</FONT> </TD>
           <TD><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">Про LF</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Эта заметка доступна на: <A href="../../English/January2002/article222.shtml">English</a> &nbsp;<A href="../../Castellano/January2002/article222.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/January2002/article222.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/January2002/article222.shtml">Deutsch</a> &nbsp;<A href="../../Francais/January2002/article222.shtml">Francais</a> &nbsp;<A href="../../Italiano/January2002/article222.shtml">Italiano</a> &nbsp;<A href="../../Nederlands/January2002/article222.shtml">Nederlands</a> &nbsp;<A href="../../Portugues/January2002/article222.shtml">Portugues</a> &nbsp;<A href="../../Russian/January2002/article222.shtml">Russian</a> &nbsp;<A href="../../Turkce/January2002/article222.shtml">Turkce</a> &nbsp;<A href="../../Arabic/January2002/article222.shtml">Arabic</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="30%" >
<TR>
<TD>

<IMG height=164
alt="[Photo of the Author]" src="../../common/images/Guido-S.gif" width=173>
<BR>автор  Guido Socher <a href="http://linuxfocus.org/~guido/"><font size="1">(homepage)</font></a>
<BR><BR>
<I>Об авторе:</I><BR>
<P>Guido любит Линукс не только из-за того, что ему интересно разбираться в том, как работают операционные системы, но так же из-за людей, которые участвуют в его создании</P>
<!-- TRANSLATED TO ru -->
<BR><BR><I>Перевод на Русский:</I><BR>
Вася Леушин <font size="1">&lt;basileus(at)newmail.ru&gt;</font>
<!-- TRANSLATED TO STOP -->
<BR><BR><i>Содержание</i>:
<UL>
  <LI><A HREF="#222lfindex0">Общее понятие дисплея</A></LI>
  <LI><A HREF="#222lfindex1">Запуск удаленного приложения</A></LI>
  <LI><A HREF="#222lfindex2">Перенос дисплея на удаленный хост</A></LI>
  <LI><A HREF="#222lfindex3">OpenGL</A></LI>
  <LI><A HREF="#222lfindex4">Заключение</A></LI>
  <LI><A HREF="#222lfindex5">Ссылки</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=222&amp;lang=en">Страница отзывов</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<H2>Запуск удаленных приложений в Х11</H2>
 <IMG
height=90 alt=[Illustration] hspace=10 src="../../common/images/illustration222.gif" width=178>
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>Резюме</i>:
<P>
Многие  пользователи при знакомстве с  Линуксом  думают, что его графический рабочий стол  это просто еще одна " Windows" в которой можно запускать приложения в отдельных окнах. Некоторые, конечно, замечают, что можно иметь несколько рабочих столов, но все равно им кажется, что это Windows. X Window System (X11) это что-то гораздо большее! Это сетевая оконная система. Мы увидим, какие новые  возможности она нам предлагает.
</P>
<HR size="2" noshade align="right"><BR>
<!-- BODY OF THE ARTICLE -->

<A NAME="222lfindex0">&nbsp;</A>
<H2>Общее понятие дисплея</H2>

<P>Каждое графическое приложение X Window при запуске считывает переменную окружения DISPLAY, что бы выяснить на какой компьютерный экран  посылать графические данные. Это,  вместе с  сетевыми возможностями системы X Window делает возможным удаленный запуск графических приложений. То есть вы используете ресурсы процессора одной машины при работе с приложением на другой. Весь GUI (графический интерфейс пользователя) появляется на той машине, с которой вы им управляете. Вы даже не замечаете, что используете два компьютера. Конечно, определенную роль здесь играет  скорость передачи данных, но нормальной 10-мегабитной локальной сети вполне достаточно.</P><BR>
<CENTER><IMG height=150 alt="[run in an application remote]" src="../../common/images/article222/remote.gif" width=200>
</CENTER><BR>
<P>Для чего это вам?<BR>Существует множество сетевых графических приложений. Компании используют их для управления оборудованием находящимся может быть за тысячи километров, и вы можете использовать такие же  приложения так, как если бы они были на вашем компьютере. <BR>Допустим, у вас есть два компьютера: одна быстрая гигагерцевая машина и еще старенький  Pentium-133 - вы вполне сможете оценить скорость вашей новой машины, даже не садясь за нее. Возможно, ваша сестра заняла быстрый компьютер - но вы все равно пользуете его.<BR><IMG height=200 alt=[display] hspace=10 src="../../common/images/article222/disply.gif" width=256
align=right vspace=10> Как это работает?<BR>Все приложения X Window (такие как например Gimp, Xterm, Konquerer, Netscape и т. д.) в действительности являются сетевыми клиентами, которые присоединяются к X-серверу. В задачу X-сервера входят: взаимодействие с графическим аппаратным обеспечением, рисование картинок на вашем экране, считывание данных с мышки и клавиатуры. Программы-клиенты (gimp, netscape) посылают серверу указания о том, как рисовать рамки и кнопки. Взамен они принимают от сервера команды с мышки и клавиатуры.
Само собой разумеется, что потребуется  аутентификация, иначе кто угодно может испортить чей-нибудь экран. Существуют две программы для управления доступом:
<BR>- xhost: используя эту программу, вы можете допустить любого пользователя с определенной машины передавать графику на ваш  дисплей.
Например: Вы работаете на машине с именем philosophus. Что бы дать доступ на ваш дисплей любой программе с хоста movietux вам нужно набрать команду:
</P>
<P class=code>xhost +movietux<BR><I>Это должно быть набрано в оболочке philosophus'а</I></P><BR>- xauth: Это более сложная программа, основанная на cookie. С ее помощью вы можете предоставлять доступ определенным пользователям, тем самым эта программа обладает более высоким уровнем безопасности, чем xhost. Аутентификация использует cookie из файла .Xauthority  в домашней директории пользователя. Доступ дается только если удаленная машина содержит нужный cookie в этом файле. Что бы скопировать этот cookie с вашей машины (philosophus) на хост с которого вы хотите запускать программу (movietux), вы можете использовать один из следующих методов:
<P class=code>xauth extract - philosophus:0.0 | ssh movietux
/usr/X11R6/bin/xauth merge<BR>или <BR>scp ~/.Xauthority movietux:</P><BR>При запуске программы-клиента происходит следующее:
<OL>
  <LI> Клиент проверяет переменную DISPLAY для поиска сервера или пытается подключиться к серверу на локальном хосте.
  <LI> Сервер проверяет, имеет ли клиент допуск к передаче "картинок" к нему. Если имеет - тогда сервер рисует графику.
</LI></OL>Переменная окружения DISPLAY имеет следующий синтаксис:
<P class=code><I>bash:</I>export
DISPLAY=hostname:displaynumber.screennumber<BR><I>tcsh:</I>setenv DISPLAY
hostname:displaynumber.screennumber</P>Я не буду говорить о displaynumber и screennumber, обычно это 0.0. Вот пример для bash:
<P class=code>export DISPLAY=philosophus:0.0</P>
<A NAME="222lfindex1">&nbsp;</A>
<H2>Запуск удаленного приложения</H2>
А теперь от теории перейдем к практике и проверим, как это все работает. Вы снова сидите за компьютером philosophus и хотите запустить что-нибудь с movietux
<OL>
  <LI> Сообщите вашему X-серверу, что клиенты с movietux имеют допуск к рисованию картинок на вашем экране:<BR>xhost +movietux
  <LI> Заходите на удаленный хост movietux:<BR>slogin -l username movietux
  <LI> Теперь вы вошли на movietux, и все ваши команды исполняются на нем
  <LI> export DISPLAY=philosophus:0.0
  <LI> Запускайте программу напр. <BR>netscape &amp; </LI></OL>если movietux - мощная машина, вы заметите, что рендеринг html-страниц в netscape проходит гораздо быстрее, чем, если бы вы запустили его локально на вашей машине. В тоже самое время вы даже не замечаете, что netscape работает не локально, потому что вы действуете мышкой и клавиатурой как обычно.
<BR>Круто, не так ли?
<A NAME="222lfindex2">&nbsp;</A>
<H2>Перенос дисплея на удаленный хост</H2>
Хотя  запускать приложения удаленно это так просто, все же бывает нужно набрать еще кое-какие команды для установки DISPLAY (все это можно автоматизировать).
<UL>
  <LI>Если вы используете ssh для входа на удаленный хост, тогда переменная DISPLAY устанавливается автоматически. Существуют так же и другие программы поддерживающие DISPLAY, но ssh наиболее распространенная.
  <LI>Если же вы используете slogin или другие команды, тогда на удаленный хост вы можете установить следующие скрипты:<BR>Для tcsh:
  <P class=code># перенос дисплея на удаленный логин:<BR># поместить его в свой файл ~/.login<BR>set whoami=`who -ml`<BR>set remhost=`expr "$whoami" :
  '.*(\(.*\))'`<BR>if ( "$remhost" != "" ) then<BR>setenv DISPLAY
  "$remhost":0.0<BR>endif</P>этот скрипт получает имя удаленного хоста из команды "who -ml". Команда возвращает что-то вроде
  <P class=code>&gt;who -ml<BR>movietux!guido pts/3 Oct 26 21:55
  (philosophus.tux.org)</P>если вы используете bash вам нужен такой скрипт:
  <P class=code># перенос дисплея на удаленный логин:<BR># поместить его в свой файл  ~/.bash_profile<BR>whoami=`who -ml`<BR>remhost=`expr "$whoami" :
  '.*(\(.*\))'`<BR>if [ -n "$remhost" ];
  then<BR>DISPLAY="$remhost":0.0<BR>export DISPLAY<BR>fi</P>
  <A NAME="222lfindex3">&nbsp;</A>
<H2>OpenGL</H2>
В то время как сетевые возможности X Window System очень хороши, графика работает несколько медленнее из-за того, что вы пересылаете данные через сетевой протокол. Обычно вы не замечаете разницы, но существуют приложения, такие как быстрые игры с насыщенной графикой, для которых скорость очень важна. Эти игры обычно основаны на библиотеках типа OpenGL. Эти библиотеки предоставляют непосредственный доступ к графическому аппаратному обеспечению. Никаких сетей. Это быстрые программы, но вы не сможете запускать их удаленно.
  <A NAME="222lfindex4">&nbsp;</A>
<H2>Заключение</H2>
С X11 использовать мощность вашей сети очень легко. Вы можете работать с удаленными приложениями так же как с локальными. Единственная разница в том, что вы видите те файлы и домашнюю директорию, которые находятся на удаленном хосте. Однако с установленными NFS и NIS вы сможете скрыть и это небольшое отличие. Вы сможете использовать всю мощность процессора самых быстрых машин в ваших сети, и ни о чем не беспокоиться.
  <A NAME="222lfindex5">&nbsp;</A>
<H2>Ссылки</H2>
<A href="http://www.x.org/">X11 system, x.org</A><BR><A
  href="http://www.xfree86.org/">xfree86.org</A> система  X11 используемая с   Linux<BR></LI></UL><!-- vim: set sw=2 ts=2 et tw=80: -->

<!-- 2pdaIgnoreStart -->
<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Страница отзывов</h2>
У каждой заметки есть страница отзывов. На этой странице вы можете оставить
свой комментарий или просмотреть комментарии других читателей.
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=222&lang=en"><b>&nbsp;talkback page&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%">
<A HREF="../../common/lfteam.html">Webpages maintained by the LinuxFocus Editor team</A>
<BR><FONT COLOR="#FFFFFF">&copy; Guido Socher, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=ru&amp;article=article222_htm" target="_TOP">Click here to report a fault or send a comment to LinuxFocus</A><BR></TD>
<TD BGCOLOR="#9999AA">
<!-- TRANSLATION INFO -->
<font size=2>Translation information:</font>
<TABLE>
  <tr><td><font size="2">en --&gt; -- : Guido Socher (<a href="http://linuxfocus.org/~guido/"><font size="1">homepage</font></a>)</font></td></tr>
  <tr><td><font size="2">en --&gt; ru: Вася Леушин &lt;basileus(at)newmail.ru&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2002-01-02, generated by lfparser version 2.19</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>