
=head1 НАЗВА

guestunmount — демонтування змонтованої за допомогою guestmount файлової
системи

=head1 КОРОТКИЙ ОПИС

 guestunmount точка_монтування

 guestunmount --fd=<дескрипто_файла> точка монтування

=head1 ОПИС

guestunmount — програма для автоматичного вилучення змонтованих файлових
систем. L<guestmount(1)> монтує файлові системи за допомогою libguestfs. Ця
програма демонтує файлову систему, коли програма або скрипт завершує роботу
з нею.

guestunmount є обгорткою навколо програми FUSE L<fusermount(1)>, яка має
зберігатися у одному з каталогів, вказаних за допомогою поточної змінної
C<PATH>.

Існує два способи використання guestunmount. Якщо програму викликано так:

 guestunmount точка_монтування

вона демонтує точку монтування C<точка_монтування> негайно.

Якщо ж програму викликано так:

 guestunmount --fd=FD точка_монтування

програма чекатиме, аж доки не буде закрито дескриптор файла C<FD>
каналу. Цим можна скористатися для спостереження за іншим процесом і
вилучення точки монтування після завершення роботи процесу, як це описано
нижче.

=head2 З ПРОГРАМ

Ви можете просто викликати C<guestunmount точка_монтування> з програми, але
розумніше було б скористатися guestunmount так, щоб ця програма спостерігала
за вашою програмою і вилучала точку монтування, якщо програма неочікувано
завершить роботу.

У програмі створіть канал обробки (наприклад, за допомогою виклику
L<pipe(2)>). Нехай C<FD> є номером дескриптора файла з боку читання у каналі
(тобто C<pipefd[0]>).

Після монтування файлової системи за допомогою L<guestmount(1)> (до точки
монтування C<точка_монтування>) виконайте відгалуження (fork) і запустіть
guestunmount ось так:

 guestunmount --fd=FD точка_монтування

Закрийте бік читання у каналі обробки у батьківському процесі.

Тепер, коли з якоїсь причини буде закрито бік запису у каналі (тобто
C<pipefd[1]>), явно або у результаті завершення роботи батьківського
процесу, guestunmount зауважить це і демонтує точку монтування.

Якщо у вашій операційній системі передбачено підтримку цього, вам слід
встановити прапорець C<FD_CLOEXEC> на боці запису у каналі. Таким чином ви
забороните іншим дочірнім процесам успадковувати дескриптор файла і тримати
його відкритим.

Guestunmount ніколи не перетворюється на фонову службу.

=head2 ЗІ СКРИПТІВ ОБОЛОНКИ

Оскільки у bash не передбачено способу створення неіменованого каналу
обробки, скористайтеся trap для виклику guestunmount при виході, ось так:

 trap "guestunmount точка_монтування" EXIT INT QUIT TERM

=head1 ПАРАМЕТРИ

=over 4

=item B<--fd=FD>

Вкажіть дескриптор файла каналу для спостереження і відкладіть вилучення до
закриття каналу.

=item B<--help>

Показати короткі довідкові дані і завершити роботу.

=item B<-q>

=item B<--quiet>

Не показувати повідомлень про помилки від fusermount. Стан повернення все
одно буде встановлено (див. L</СТАН ВИХОДУ> нижче).

=item B<--no-retry>

=item B<--retry=N>

Типово, guestunmount виконуватиме повторні спроби fusermount аж до S<5
разів> (тобто загалом буде виконано S<6 спроб> = S<1 перша спроба> + S<5
повторних спроб>).

Скористайтеся параметром I<--no-retry>, щоб наказати guestunmount запускати
fusermount лише один раз.

Скористайтеся параметром I<--retry=N>, щоб наказати guestunmount виконувати
C<N> повторних спроб замість 5.

guestunmount збільшує час між спробами експоненційно, очікуючи S<1 секунду>,
S<2 секунди>, S<4 секунди> тощо перед кожною повторною спробою.

=item B<-V>

=item B<--version>

Показати дані щодо версії програми, потім вийти

=back

=head1 ЗМІННІ СЕРЕДОВИЩА

=over 4

=item C<PATH>

Програма L<fusermount(1)> (є частиною комплекту FUSE) має зберігатися у
одному з каталогів, вказаних за допомогою поточної змінної C<PATH>.

=back

=head1 СТАН ВИХОДУ

Ця програма повертає значення 0 у разі успішного завершення або один із
таких кодів помилок:

=over 4

=item C<1>

Помилка програми, наприклад, не вдалося отримати достатній обсяг пам'яті, не
вдалося запустити fusermount.  Щоб дізнатися більше, ознайомтеся із
виведеним повідомленням про помилку.

=item C<2>

Не вдалося демонтувати точку монтування навіть після повторних спроб. Дані
щодо базової помилки fusermount буде показано у виведеному повідомленні про
помилку.

=item C<3>

Точку монтування не змонтовано.

=back

=head1 ТАКОЖ ПЕРЕГЛЯНЬТЕ

L<guestmount(1)>, L<fusermount(1)>, L<pipe(2)>, L<guestfs(3)/ЛОКАЛЬНЕ
МОНТУВАННЯ>, L<http://libguestfs.org/>, L<http://fuse.sf.net/>.

=head1 АВТОРИ

Richard W.M. Jones (C<rjones at redhat dot com>)

=head1 АВТОРСЬКІ ПРАВА

© Red Hat Inc., 2013

