Глава 7. Практические занятия по базовому администрированию UNIX

Содержание

Методические указания по командам управления службами и журналами
Текстовые редакторы
Команды по управлению системой
Команды по управлению службами
Команды по мониторингу пользователей
Резюме
Дополнительные материалы
Практическое занятие. Управление службами
Сценарий: Загрузка системы
Сценарий: Системные службы: запуск и остановка
Сценарий: Уровни выполнения системы
Сценарий: Остановка и перезагрузка системы
Сценарий: Использование службы планировщика заданий
Сценарий: Системные журналы
Сценарий: Мониторинг пользователей
Задания для самоподготовки
Сценарии практического занятия на тему: Управление службами
Методические указания по командам управления программным обеспечением
Программы сборки и установки программ
Команды по работе с репозиторием пакетов
Резюме
Дополнительные материалы
Практическое занятие. Управление программным обеспечением
Сценарий: Установка программы из исходных текстов
Сценарий: Получение информации о пакетах
Сценарий: Установка и удаление пакетов
Сценарий: Работа с репозиторием
Задания для самоподготовки
Сценарии практического занятия на тему: Управление программным обеспечением

Методические указания по командам управления службами и журналами

Текстовые редакторы

Чаще всего администратору приходится править текстовые конфигурационные файлы, для чего подойдёт множество редакторов или средств командной строки. Здесь рассматриваются два текстовых редактора: маленький и простой joe и более распространённый универсальный редактор vi.

joe

Редактор joe обладает полноценным интерфейсом к консольном режиме. Для открытия файла на редактирование можно запустить команду joe имя_файла. Текущая версия редактора имеет уже достаточно широкие возможности — это: подсветка синтаксиса, одновременное редактирование нескольких файлов, запуск внутренних команд, использование комбинаций клавиш и т. д.

Интересной особенностью редактора является возможность запуска его в одном из «стилей» интерфейсов других распространённых редакторов, таких как emacs или pico. Для запуска редактора в этом случае нужно использовать команду jmacs или jpico соответственно. Далее будет рассматриваться работа редактора в его «оригинальном» стиле интерфейса.

Рабочий экран

Верхнюю строку занимает строка состояния, в которой содержится следующая информация (слева-направо):

  • состояние нажатых управляющих клавиш;
  • имя редактируемого файла;
  • информация об изменениях (например, «Read Only» или «Modified»);
  • положение курсора (строка и колонка);
  • текущее время;
  • справочное руководство.

Если открыто несколько файлов, каждый из них будет сопровождаться таким заголовком.

Основной объём экрана занимает рабочая область редактирования текста. Курсор может перемещаться с помощью стандартных клавиш: стрелок, PgUp /PgDn и т. п.

Внизу экрана находится командная строка, в которой выводятся вопросы или сообщения редактора.

Управляющие клавиши

Большинство комбинаций построено на основе сочетания клавиш Ctrl+K. Например, для закрытия файла с сохранением — Ctrl+K+X. Для отмены операций и для выхода без сохранения используется Ctrl+C.

При нажатии Ctrl+K+H можно получить справку по существующим сочетаниям клавиш и командам.

Для выделения областей используются комбинации Ctrl+K+B и Ctrl+K+K. Выделенный текст можно копировать с помощью Ctrl+K+С.

Встроенные команды

Редактор joe имеет ряд встроенных команд. При этом joe может быть запущен в качестве потокового редактора, когда на стандартный вход подаётся последовательность команд по изменению или созданию текста.

Для вычисления простых математических функций и выражений используется встроенный калькулятор, вызываемый по нажатию ESC+M.

Настройка

Конфигурация редактора хранится в каталоге /etc/joe/ и включает в себя настройки редактора, клавиш управления, подсветки синтаксиса и т. д.

vi

Редактор vi является одним из самых распространённых текстовых редакторов для различных версий UNIX. Администратору необходимо овладеть хотя бы основами этого редактора, так как найти его можно практически в любой UNIX-системе.

Как и с другими экранными редакторами, чтобы открыть файл, достаточно набрать vi имя_файла.

Режимы работы

Основной особенностью редактора vi является наличие режимов работы. Основным режимом является режим команд, в котором нажатия на клавиши задают команду редактору. Для реактирования текста удобно применять режим вставки, в котором можно перемещать курсор по редактируемому тексту, вставлять или удалять символы.

В начале работы редактор находится в командном режиме, а для перехода в режим редактирования необходимо ввести команду i (insert) или a (append) — для вставки текста перед и после курсора соответственно. Для возвращения в командный режим используется клавиша ESC.

В командном режиме все нажатия клавиш воспринимаются как команды. Длинные команды удобно набирать в командной строке — в последней строке экрана, куда можно перейти при нажатии :.

Полезные команды

Для простейшей работы с редактором vi достаточно знать несколько команд.

Команда :w сохраняет текущие изменения в файле, при необходимости запрашивая имя файла. С помощью команды :q можно выйти из редактора, но только если файл не был изменён — иначе придётся добавлять к команде специальный модификатор !: :q! для выхода без сохранения.

Версии редактора

Существует несколько версий редактора vi. Одним из самых распространённых является редактор vim — «усовершенствованный» vi. Возможности его очень широки и включают разнообразные режимы редактирования для разных языков, подсветку синтаксиса и т. п.

Дополнительная информация

Текстовым редакторам vi и vim посвящено множество книг и материалов в сети Internet, рекомендуется обратить внимание на книги указанные в разделе «Вопросы».

Пример использования

Запустим редактор vi и создадим новый файл по имени test командой vi test.

_
~
~
~
~
~
"test" [New file]

Редактор vi сейчас находится в командном режиме. Нажмем клавишу i (или Insert), и редактор перейдет в режим ввода текста. Теперь вводим, например, следующий текст:

Linux is a Unix-like computer operating system family that uses the Linux kernel. 
A Linux system which includes system utilities and libraries from the GNU Project is 
sometimes referred to as GNU/Linux. Linux underlying source code is available for anyone
to use, modify, and redistribute freely. Linux is really free and open-source software.
~

Введите любое количество строк, используя Enter для переноса строки. Можно использовать клавишу Backspace для удаления текста. Для выхода из режима ввода и возвращения в командный режим следует нажать клавишу Esc.

Основные клавиши для перемещения курсора в командном режиме — это: j, k, l и h. Они передвигают курсор соответственно вниз на одну строчку, вверх на одну строчку, вправо на один символ и влево па один символ.

Если перед командой введено число, команда будет выполнена соответственное количество раз. Иными словами, команда 25j переведет курсор на 25 строк вниз. Однако, если от текущей позиции курсора до конца файла меньше, чем 25 строк, vi выдаст сигнал (гудок). То же самое произойдет, если вы даете команду на перемещение вверх, а до начала файла строк меньше, чем указано в команде. Вы не сдвинетесь с места, пока не будет подана команда, которую можно выполнить.

Для перемещения на экран следует соответственно использовать комбинации Ctrl+f, чтобы переместиться на экран вперед (вниз), и Ctrl+b, чтобы переместиться на экран назад (вверх).

В командном режиме нажатие клавиши x удаляет символ, на который указывает курсор. Для того, чтобы удалить слово, на которое показывает курсор, можно использовать команду dw. Подведите курсор к началу слова «source» и введите dw. Можно удалять целые строки командой dd (т. е. нажав клавишу d два раза подряд). Традиционно для vi, если перед командой введено число, команда будет выполнена соответственное количество раз. Таким образом, если установить курсор в начало текста и нажать «2dd», будет удалены 2 строки текста.

Чтобы отменить сделанные изменения в командном режиме следует использовать команду u.

Чтобы сохранить файл, но не выходить из редактора vi, используется команда :w. Когда вводится команда :, курсор переходит на последнюю строку экрана, и таким образом редактор оказывается в режиме последней строки: внизу экрана появится символ двоеточия.

Команда :wq сначала сохраняет измененный файл, а затем выходит из редактора vi. Для выхода из редактора vi без сохранения изменений, сделанных в файле, используется команда :q!.

Команды по управлению системой

init

Команда init служит для переключения уровня выполнения операционной системы (см. раздел «Системы, наследующие System V»). init — первая команда, запускаемая ядром операционной системы. Пользователь имеет возможность с помощью её запуска переключать уровень выполнения без перезагрузки. Для запуска этой команды необходимы права суперпользователя.

Команда init имеет следующий вид:

init [уровень]

Параметры загрузки системы на определённых уровнях зависят от конкретной UNIX-системы, и обычно задаются в файле /etc/inittab.

Для переключения системы в альтернативный уровень исполнения, необходимо передать его как параметр запуска init:

[root@localhost ~]# init 1
...

После выполнения этой команды система переключается в первый уровень выполнения, так называемый однопользовательский режим (single user mode).

В большинстве Linux-систем чаще всего используются 1-й, 3-й и 5-й уровни выполнения. Переключение между 3-м и 5-м уровнем используется при изменениии вида входа в систему — в текстовой консоли или в графической подсистеме соответственно. Первый уровень исполнения служит для конфигурации системы в ограниченном однопользовательском режиме. Команду init можно использовать также для выключения системы или перезагрузки — переведя её в 0-й или 6-й уровень выполнения соответственно, но чаще для этого используются специальные команды (см. ниже).

В некоторых UNIX-системах для переключения уровня выполнения используется команда telinit, которая может предоставлять более гибкий интерфейс переключения уровня исполнения.

shutdown

Команда shutdown является универсальным интерфейсом для остановки и перезапуска операционной системы. Команда имеет следующий вид:

shutdown [-t секунды] [-k | -r | -h] [-p] время [сообщение]

Для запуска этой команды необходимы права суперпользователя.

В UNIX-системах с уровнями выполнения команда shutdown в зависимости от параметров и ключей фактически переводит систему в один из трёх уровней выполнения:

-k
Не производит переключение или перезагрузку, а только отправляет сообщение пользователям системы.
-r
Перезагружает систему (переключает в 6-й уровень выполнения).
-h
Останавливает систему (переключает в 0-й уровень выполнения). Вместе с этим ключом в некоторых системах может использоваться ключ -p, который указывает операционной системе на необходимость выключения питания компьютера (с использованием APM или ACPI).
без указанных параметров
Система переключается в 1-й уровень выполнения (однопользовательский режим).

Еще одним возможным параметром выполнения команды является время (-t) в секундах, которое дожно пройти в процессе выключения или переагрузки системы между отправлением процессам сигналов SIGTERM и SIGKILL.

Обязательным параметром команды shutdown является время, в которое необходимо произвести данное выключение или перезагрузку. Если необходимо произвести её в данный момент, то вместо времени можно указать слово «now». Также можно указать сообщение, которое будет отправлено всем пользователям системы — для уведомления пользователей о предстоящей перезагрузке. Если сообщение явно не указывается, система отправит всем пользователям стандартное сообщение.

Рассмотрим примеры использования программы:

[root@localhost ~]# shutdown -r 22:00 "The system will be rebooted in 30 minutes!"
...

Эта команда производит перезагрузку системы в 22:00.

[root@localhost ~]# shutdown -ph now
...

Эта команда выключает систему сразу после выполнения команды.

halt, poweroff, reboot

Эти команды являются сокращением указанных выше опций команды shutdown и соответсвенно останавливают систему, останавливают с выключением питания и перезагружают систему непосредственно после выполнения команды. Для выполнения этих команд необходимы права суперпользователя.

Команды по управлению службами

crontab

Команда crontab является интерфейсом управления службой планировщика. С помощью данной команды пользователи могут изменять список программ, запускаемых планировщиком по расписанию. При этом необходимо, чтобы в системе был запущен сам демон планировщика (например, crond), который и производит запуск программ.

Команда crontab может запускаться в одном из двух вариантов:

crontab [-u пользователь] файл
crontab [-u пользователь] [-l | -r | -e]

В первом случае, можно загрузить файл с конфигурацией планировщика (например, /etc/crontab). Во втором — посмотреть или изменить план запуска для указанного пользователя.

В обоих случаях ключ -u может использоваться суперпользователем для изменения конфигурации планировщика других пользователей системы.

Конфигурацию планировщика можно сохранить в файле согласно формату, рассмотренному в разделе «Конфигурация планировщика заданий». После этого можно загрузить его во внутренний формат демона планирования с помощью команды crontab:

[root@localhost ~]# cat /etc/crontab
*/5 * * * *      /usr/bin/vnstat -u
58  * * * *      rdate -s ptbtime1.ptb.de
[root@localhost ~]# crontab /etc/crontab
14:37:13 installing file /etc/crontab for user root
Modifications will be taken into account right now.

Второй вариант запуска программы позволяет просматривать и изменять текущюю конфигурацию планировщика. При этом используется один из ключей:

-l
посмотреть текущую конфигурацию планировщика;
-e
отредактировать текущую конфигурацию планировщика, при этом запускается системный редактор (который задаётся переменной окружения EDITOR);
-r
удалить текущую конфигурацию планировщика.

Рассмотрим примеры использования команды crontab:

Текущая конфигурация планировщика может выглядеть, например, так:

[user@localhost ~]$ crontab -l
15:23:04 listing user's fcrontab
0 3 */3 * *      backup.sh

Сценарий резервного копирования запускается в 3 часа ночи раз в три дня.

service

В ряде UNIX-систем для управления службами может использоваться команда service. Она принимает следующие параметры:

service служба (start|stop|restart)

Третий параметр — это команда на запуск, остановку и перезапуск службы, имя которой указывается вторым параметром. Для запуска этой команды необходимы права суперпользователя.

Пример перезапуска службы печати:

[root@localhost ~]# service cups restart
Stopping cups:                                             [  OK  ]
Starting cups:                                             [  OK  ]

Обычно системные службы располагаются в каталоге /etc/init.d.

chkconfig

Команда chkconfig используется для изменения списка служб, соответствующих тому или иному уровню выполнения системы. Эта команда позволяет Вам указывать, какие службы следует запускать при старте системы, а какие нет.

Команда имеет следующий синтаксис:

chkconfig (--list|--add|--del) [имя службы]
chkconfig [--level уровни] имя службы (on|off|reset)

В первом варианте использования можно посмотреть список установленных в системе служб и уровни выполнения, на которых они запускаются или останавливаются. Например:

[root@localhost ~]# chkconfig --list
readahead       0:off   1:off   2:off   3:off   4:off   5:on    6:off
kudzu           0:off   1:off   2:on    3:on    4:on    5:on    6:off
lisa            0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:off   4:off   5:off   6:off
...

Для каждой из служб всем уровням выполнения соответствует слово on или off, означающее соответственно запуск и останов службы на данном уровне выполнения. В этом примере служба lisa не будет запущена ни на одном из уровней выполнения.

С помощью параметрических ключей --add и --del можно добавлять и удалять службы из системной загрузки.

[root@localhost ~]# chkconfig --list | grep autofs
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@localhost ~]# chkconfig --del autofs
[root@localhost ~]# chkconfig --list | grep autofs
[root@localhost ~]# chkconfig --add autofs
[root@localhost ~]# chkconfig --list | grep autofs
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off

В этом примере служба autofs последовательно удаляется из загрузки и добавлется обратно.

Второй вариант команды используется для настройки запуска службы на различных уровнях выполнения. К примеру, эта команда устанавливает запуск службы только на 3-м и 5-м уровнях выполнения:

[root@localhost ~]# chkconfig --list | grep autofs
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@localhost ~]# chkconfig --level 35 autofs on
[root@localhost ~]# chkconfig --level 4 autofs off
[root@localhost ~]# chkconfig --list | grep autofs
autofs          0:off   1:off   2:off   3:on    4:off   5:on    6:off

Команды по мониторингу пользователей

В прошлых практических занятиях уже рассматривалась команда «Вопросы». Здесь будут рассмотрены аналогичные команды, связанные с историей входа пользователей в систему.

last

Команда last отображает список пользователей, вошедших в систему, отсортированный по времени. Команда имеет ряд параметров, среди которых:

-n число
число последних входов в систему, которые команда должна вывести на экран;
-t ГГГГММДДЧЧММСС
дата и время, для которых необходимо показать информацию о входе в систему;
имя пользователя
отображать только сеансы указанного пользователя.

В этом примере выводится информация о последних семи входах в систему. В первом столбце указано имя пользователя, во втором — терминал или номер графического дисплея, время входа и общее время работы в системе.

[user@localhost ~]$ last -n 7
user     pts/1        :0.0             Wed Oct 11 15:21   still logged in
user     pts/1        :0.0             Wed Oct 11 14:34 - 14:52  (00:17)
user     pts/1        :0.0             Wed Oct 11 12:33 - 13:30  (00:56)
user     pts/1        :0.0             Wed Oct 11 12:04 - 12:31  (00:27)
user     pts/1        :0.0             Wed Oct 11 11:26 - 11:27  (00:00)
user     :0                            Wed Oct 11 11:20   still logged in
reboot   system boot  2.6.9-42.0.2.EL  Wed Oct 11 11:19          (05:50)

wtmp begins Mon Oct  2 17:57:35 2006

Особый интерес представляет псевдопользователь «reboot», который соответствует системным перезагрузкам.

Этот пример показывает выборку по указанному времени:

[user@localhost ~]$ last -t 20061003100000
dralex   pts/1        :0.0             Mon Oct  2 18:04 - down   (00:25)
dralex   pts/1        :0.0             Mon Oct  2 17:57 - 18:00  (00:02)

wtmp begins Mon Oct  2 17:57:35 2006

В последней строке говорится о том, с какого момента хранится информация о входах в систему.

Можно запросить информацию об отдельном пользователе:

[user@localhost ~]$ last reboot
reboot   system boot  2.6.9-42.0.2.EL  Wed Oct 11 11:19          (06:03)
reboot   system boot  2.6.9-42.0.2.EL  Tue Oct 10 23:59          (02:22)
reboot   system boot  2.6.9-42.0.2.EL  Tue Oct 10 10:53          (05:46)
...

lastlog

Команда lastlog показывает время последнего входа в систему для всех зарегистрированных пользователей.

[root@localhost ~]# lastlog
Username         Port     From             Latest
root             tty1                      Tue Sep 12 23:42:13 +0400 2006
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
...
pegasus                                    **Never logged in**
user            :0                        Wed Oct 11 11:20:18 +0400 2006

Видно, что большая часть пользователей не являются интерактивными, и используются только при исполнении системных процессов (а, может быть, и вовсе не используются), т. к. они ни разу не производили вход в систему.

Для того, чтобы получить информацию об отдельно взятом пользователе, можно использовать ключ -u:

[root@localhost ~]# lastlog -u root
Username         Port     From             Latest
root             tty1                      Tue Sep 12 23:42:13 +0400 2006

faillog

Команда faillog показывает время последней неудачной попытки входа в систему. По параметрам она аналогична команде lastlog.

[root@localhost ~]# faillog
Login       Failures Maximum Latest                   On
root            2        0   07/06/06 13:28:19 +0400

Для каждого пользователя показывается также общее и максимальное число неверных попыток.

Для каждого из пользователей можно задать максимальное число ошибочных попыток входа в систему, по достижению которого аккаунт блокируется. Установить новое значение максимального числа ошибок можно с помощью ключа -m. Установка его в 0 означает отсутствие контроля максимального числа неверных попыток.

Резюме

В данном разделе рассматриваются команды по работе со службами и системными журналами.

Ключевые термины: «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы», «Вопросы»

Дополнительные материалы

  1. Курячий Г.В. Операционная система UNIX. — М.:Интуит.Ру, 2004. — 292 с.: ил.