Компьютерная помощь
Сайт комнаты "Компьютерная помощь"

На заметку системному администратору FreeBSD. Утилита watch.

freeBSD | 16 июля 2016 г.

Надеемся, что данные заметки будут полезны системным администраторам. 

Часто возникают ситуации, когда нужно на удаленной машине произвести какие-либо действия, подразумевающие под собой запуск долговременного процесса (например, сборка ядра системы или порта, обновление портов). Держать консоль открытой несколько часов неудобно (правда можно медитировать, глядя на процесс компиляции :), к тому же бывает, что связь с удаленным компьютером обрывается (разрывы!!! :) ), процесс компиляции в этом случае останавливается. Нужно снова идти на удаленку и запускать задачу заново (или продолжить процесс).

В Unix-подобных ОС для решения этой проблемы (то есть для запуска процесса в фоновом режиме) существует оконный менеджер screen. Как им пользоваться описано, например, здесь: http://kovyrin.net/2006/03/22/using-screen-window-manager-to-run-background-jobs/lang/ru. Однако в FreeBSD есть еще более, на мой взгляд, удобная утилита - watch (в Linux она, к сожалению, служит для других целей). Вообще watch в FreeBSD "шпионит" за другой консолью (watch -- snoop on another tty line), однако, почитав man watch, я нашел интересную опцию: -W Allow write access to observed tty. То есть в консоль, за которой "шпионит" watch, можно писать.

Как это выглядит в действии:

1) Подключаемся к удаленной машине, например по ssh:

$ ssh srv.foreignhost.org
Password:
Last login: Sun Oct  4 20:14:43 2009 from XX.XX.XX.XX Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California.  All rights reserved.  FreeBSD 7.2-STABLE (mykernel) #0:
Sat Sep  5 20:20:12 EEST 2009  Welcome to FreeBSD!
$

2) Получаем рутовый шелл:

$ su
Password:
#

3) Поключаемся к соседней консоли (например к 7-ой) и авторизуемся в ней:

# watch -W ttyv6 root
Password:
Last login: Sun Sep 20 21:21:28 on ttyv0 Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved. 
FreeBSD 7.2-STABLE (mykernel) #0: Sat Sep  5 20:20:12 EEST 2009  Welcome to FreeBSD!
#

4) Далее выполняем нужные действия, например, обновим все порты:

# portupgrade -aRr --batch > /var/log/watch.prtupg.log

Примечание: опция --batch (или BATCH=yes) используется, чтобы система не задавала вопросов и пересобирала порты с дефолтными опциями (в противном случае надо будет периодически подключаться снова, чтобы указать опции сборки того или иного порта); лог обновления будет записан в файл /var/log/watch.prtupg.log

5) Теперь выходим из watch нажатием сочетания клавиш Ctrl+G. Читаем лог обновления:

# tail -f /var/log/watch.prtupg.log

При необходимости подключаемся снова. Либо покидаем удалённую машину, уповая на то, что обновление пройдет без ошибок, а логи почитаем потом. :)

ЗЫ: Забыл важную деталь. Перед тем, как подключаться к консоли можно посмотреть, не занята ли она уже кем-нибудь, мало ли. :) Делается это простой командой w:

# w
1:13 up 96 days, 5:16, 1 user, load averages: 0,05 0,03 0,08
USER TTY FROM LOGIN@ IDLE WHAT remedy p0 XX.XX.XX.XX 1:12 - w
#

Как видно, консоль ttyv6 свободна, занята только ttyp0 (ssh-шелл).

Автор: Remedy

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru yandex.ru

При цитировании, копировании, клонировании материалов с сайта целиком или частично, ссылка на страницу, откуда был скопирован материал, обязательна! При нарушении данных условий прошу незамедлительно удалить со своих ресурсов скопированный материал. Администрация сайта.

Комментариев: 1
    

    Комментариев: 1

    Оставьте комментарий!

    Используйте нормальные имена

    Вы можете войти под своим логином или зарегистрироваться на сайте.

    (обязательно)