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

На заметку системному администратору 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

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

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

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

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

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