mirror_lxc/doc/lxc-console.sgml.in
Dwight Engen b515981702 console API improvements
Add a higher level console API that opens a tty/console and runs the
mainloop as well. Rename existing API to console_getfd(). Use these in
the python binding.

Allow attaching a console peer after container bootup, including if the
container was launched with -d. This is made possible by allocation of a
"proxy" pty as the peer when the console is attached to.

Improve handling of SIGWINCH, the pty size will be correctly set at the
beginning of a session and future changes when using the lxc_console() API
will be propagated to it as well.

Refactor some common code between lxc_console.c and console.c. The variable
wait4q (renamed to saw_escape) was static, making the mainloop callback not
safe across threads. This wasn't a problem when the callback was in the
non-threaded lxc-console, but now that it is internal to console.c, we have
to take care of it. This is now contained in a per-tty state structure.

Don't attempt to open /dev/null as the console peer since /dev/null cannot
be added to the mainloop (epoll_ctl() fails with EPERM). This isn't needed
to get the console setup (and the log to work) since the case of not having
a peer at console init time has to be handled to allow for attaching to it
later.

Move signalfd libc wrapper/replacement to utils.h.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2013-06-12 15:53:08 -05:00

174 lines
4.5 KiB
Plaintext

<!--
lxc: linux Container library
(C) Copyright IBM Corp. 2007, 2008
Authors:
Daniel Lezcano <daniel.lezcano at free.fr>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
<!DOCTYPE refentry PUBLIC @docdtd@ [
<!ENTITY commonoptions SYSTEM "@builddir@/common_options.sgml">
<!ENTITY seealso SYSTEM "@builddir@/see_also.sgml">
]>
<refentry>
<docinfo><date>@LXC_GENERATE_DATE@</date></docinfo>
<refmeta>
<refentrytitle>lxc-console</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>lxc-console</refname>
<refpurpose>
Launch a console for the specified container
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>lxc-console</command>
<arg choice="req">-n <replaceable>name</replaceable></arg>
<arg choice="opt">-e <replaceable>escape character</replaceable></arg>
<arg choice="opt">-t <replaceable>ttynum</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
If the tty service has been configured and is available for the
container specified as parameter, this command will launch a
console allowing to log on the container.
</para>
<para>
The available tty are free slots taken by this command. That
means if the container has four ttys available and the command
has been launched four times each taking a different tty, the
fifth command will fail because no console will be available.
</para>
<para>
The command will connect to a tty. If the connection is lost or
broken, the command can be launched again and regain the tty at
the state it was before the disconnection.
</para>
<para>
A <replaceable>ttynum</replaceable> of 0 may be given to attach
to the container's /dev/console instead of its
dev/tty&lt;<replaceable>ttynum</replaceable>&gt;.
</para>
<para>
A keyboard escape sequence may be used to disconnect from the tty
and quit lxc-console. The default escape sequence is &lt;Ctrl+a q&gt;.
</para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term>
<option>-e <optional><replaceable>escape character</replaceable></optional></option>
</term>
<listitem>
<para>
Specify the escape sequence prefix to use instead of
&lt;Ctrl a&gt;.
This may be given as '^letter' or just 'letter'. For example
to use &lt;Ctrl+b q&gt; as the escape sequence use -e '^b'.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-t <optional><replaceable>ttynum</replaceable></optional></option>
</term>
<listitem>
<para>
Specify the tty number to connect to or 0 for the console. If not
specified the next available tty number will be automatically
choosen by the container.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&commonoptions;
<refsect1>
<title>Diagnostic</title>
<variablelist>
<varlistentry>
<term>tty service denied</term>
<listitem>
<para>
No tty is available or there is not enough privilege to
use the console. For example, the container belongs to
user "foo" and "bar" is trying to open a console to it.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&seealso;
<refsect1>
<title>Author</title>
<para>Daniel Lezcano <email>daniel.lezcano@free.fr</email></para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->