mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-06-11 22:11:24 +00:00

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>
174 lines
4.5 KiB
Plaintext
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<<replaceable>ttynum</replaceable>>.
|
|
</para>
|
|
|
|
<para>
|
|
A keyboard escape sequence may be used to disconnect from the tty
|
|
and quit lxc-console. The default escape sequence is <Ctrl+a q>.
|
|
</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
|
|
<Ctrl a>.
|
|
This may be given as '^letter' or just 'letter'. For example
|
|
to use <Ctrl+b q> 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:
|
|
-->
|