
=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

