Чаще всего аминистратору приходится править текстовые конфигурационные файлы, для чего подойдёт множество редакторов или средств командной строки. Здесь рассматриваются два текстовых редактора: маленький и простой joe и более распространённый универсальный редактор vi.
Редактор joe обладает полноценным интерфейсом к консольном режиме. Для открытия файла на редактирования можно запустить команду joe имя_файла. Текущая (3-я) версия редактора имеет уже достаточно широкие возможности – это: подсветка синтаксиса, открытие для редактирования нескольких файлов, запуск внутренние команды, использование комбинации клавиш и т.д..
Интересной особенностью редактора является возможность запуска его в одном из «стилей» интерфейсов других распространённых редакторов, таких как emacs или pico. Для запуска редактора в этом случае нужно использовать команду jmacs или jpico соответственно. Далее будет рассматриваться работа редактора в его «оригинальном» стиле интерфейса.
Верхнюю строку занимает строка состояния, в которой содержится следующая информация (слева-направо):
Если открыто несколько файлов, каждый из них будет сопросождаться таким заголовком.
Основной объём экрана занимает рабочая область редактирования текста. Курсор может перемещаться с помощью стандартных клавиш: стрелок, 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/
и
включает в себя настройки редактора, клавиш управления, подсветки синтаксиса и
т.д..
Редактор joe обладает полноценным интерфейсом к консольном режиме. Для открытия файла на редактирования можно запустить команду joe имя_файла. Текущая (3-я) версия редактора имеет уже достаточно широкие возможности – это: подсветка синтаксиса, открытие для редактирования нескольких файлов, запуск внутренние команды, использование комбинации клавиш и т.д..
Интересной особенностью редактора является возможность запуска его в одном из «стилей» интерфейсов других распространённых редакторов, таких как emacs или pico. Для запуска редактора в этом случае нужно использовать команду jmacs или jpico соответственно. Далее будет рассматриваться работа редактора в его «оригинальном» стиле интерфейса.
Верхнюю строку занимает строка состояния, в которой содержится следующая информация (слева-направо):
Если открыто несколько файлов, каждый из них будет сопросождаться таким заголовком.
Основной объём экрана занимает рабочая область редактирования текста. Курсор может перемещаться с помощью стандартных клавиш: стрелок, PgUp / PgDn и т.п..
Внизу экрана находится командная строка, в которой выводятся вопросы или сообщения редактора.
Большинство комбинаций построено на основе сочетания клавиш Ctrl-K. Например, для закрытия файла с сохранением – Ctrl-K-X. Для отмены операций и для выхода без сохранения используется Ctrl-C.
При нажатии Ctrl-K-H можно получить справку по существующим сочетаниям клавиш и командам.
Для выделения областей используются комбинации Ctrl-K-B и Ctrl-K-K. Выделенный текст можно копировать с помощью Ctrl-K-С.
Редактор joe имеет ряд встроенных команд. При этом joe может быть запущен в качестве потокового редактора, когда на стандартный вход подаётся последовательность команд по изменению или созданию текста.
Для вычисления простых математических функций и выражений используется встроенный калькулятор, вызываемый по нажатию ESC-M.
Редактор vi является одним из самых распространённых текстовых редакторов для различных версий UNIX. Администратору необходимо овладеть хотя бы основами этого редактора, так как найти его можно практически в любой UNIX-системе.
Как и с другими экранными редакторами, чтобы открыть файл, достаточно набрать vi имя_файла.
Основной особенностью редактора vi является наличие режимов работы. Основным режимом является режим команд, в котором нажатия на клавиши задают команду редактору. Для реактирования текста удобно применять режим вставки, в котором курсор может перемещаться по редактируемому тексту, вставлять или удалять символы.
В начале работы редактор находится в командном режиме, а для перехода в режим
редактирования необходимо ввести команду i
(insert)
или a
(append) – для вставки текста перед и после
курсора соответственно. Для возвращения в командный режим используется клавиша
ESC.
В командном режиме все нажатия клавиш воспринимаются как команды. Длинные команды удобно набирать в командной строке – в последней строке экране, куда можно перейти при нажатии «:».
Для простейшей работы с редакторомv vi достаточно знать несколько команд.
Команда :w сохраняет текущие изменения в файле, при необходимости запрашивая имя файла. С помощью команды :q можно выйти из редактора, но только если файл не был изменён – иначе, придётся добавлять к команде специальный модификатор «!»: :q! – для выхода без сохранения.
Существует несколько версий редактора vi. Одним из самых распространённых является редактор vim: «усовершенствованный» vi. Возможности его очень широки и включают разнообразные режимы редактирования для разных языков, подсветку синтаксиса и т.п..
Текстовым редакторам vi и vim посвящено множество книг и материалов в сети Internet, рекомендуется обратить внимание на книги указанные в разделе «Дополнительные материалы».
Команда init служит для переключения уровня выполнения операционной системы (см. раздел «Системы, наследующие System V»). init – первая команда, запускаемая сдром операционной системы. Пользователь имеет возможность с помощью её запуска переключать уровень выполнения без перезагрузки. Для запуска этой команды необходимы права суперпользователя.
Команда init имеет следующий вид:
init [уровень]
Параметры загрузки системы на определённых уровнях зависят от конкретной
UNIX-системы, и обычно задаются в файле /etc/inittab
.
Для переключения системы в альтернативный уровень исполнения, необходимо передать его как параметр запуска init:
desktop test # init 1 ...
После выполнения этой команды, система переключается в первый уровень выполнения, так называемый однопользовательский режим (single user mode).
В большинстве Linux-систем чаще всего используются 1-й, 3-й и 5-й уровни выполнения. Переключение между 3-м и 5-м уровнем используется при изменениии вида входа в систему – в текстовой консоли или в графической подсистеме соответственно. Первый уровень исполнения служит для конфигурации системы в ограниченном однопользовательском режиме. Команду init можно использовать также для выключения системы или перезагрузки – переведя её в 0-й или 6-й уровень выполнения соответственно, но чаще для этого используются специальные команды (см. ниже).
В некоторых UNIX-системах для переключения уровня выполнения используется команда telinit, которая может предоставлять более гибкий интерфейс переключения уровня исполнения.
Команда shutdown является универсальным интерфейсом для отсановки и перезапуска операционной системы. Команда имеет следующий вид:
shutdown [-t секунды] [-k | -r | -h] [-p] время [сообщение]
Для запуска этой команды необходимы права суперпользователя.
В UNIX-системах с уровнями выполнения команда shutdown в зависимости от параметров фактически переводит систему в один из трёх уровней исполнения:
-k
-r
-h
-p
, который указывает
операционной системе необходимость выключения питания компьютера (с
использованием APM или ACPI).
Еще одним возможным параметром выполнения команды является время (-t
) в секундах, которое дожно пройти в процессе
выключения или переагрузки системы между отправлением процессам сигналов
SIGTERM и SIGKILL.
Обязательным параметром команды shutdown является время, в которое необходимо произвести данное выключение или перезагрузку. Если необходимо произвести её в данный момент, то вместо времени можно указать слово «now». Также можно указать сообщение, которое будет отправлено всем пользователям системы – для уведомления пользователей о предстоящей перезагрузке. Если сообщение явно не указывается, система отправит всем пользователям стандартное сообщение.
Рассмотрим примеры использования программы:
desktop test # shutdown -r 22:00 "The system will be rebooted in 30 minutes!" ...
Эта команда производит перезагрузку системы в 22:00.
desktop test # shutdown -ph now ...
Эта команда выключает систему сразу после выполнения команды.
Эти команды являются сокращением указанных выше опций команды shutdown и соответсвенно останавливают систему, останавливают с выключением питания и перезагружают систему непосредственно после выполнения команды. Для запуска этих команд необходимы права суперпользователя.
Команда crontab является интерфейсом управления службой планировщика. С помощью данной команды пользователи могут изменять список программ, запускаемых планировщиком по расписанию. При этом необходимо, чтобы в системе был запущен сам демон планировщика (например, crond), который и производит запуск программ.
Команда crontab может запускаться в одном из двух вариантов:
crontab [-u пользователь] файл crontab [-u пользователь] [-l | -r | -e]
В первом случае, можно загрузить файл с конфигурацией планировщика (например,
/etc/crontab
). Во втором – посмотреть или
изменить план запуска для указанного пользователя.
В обоих случаях параметр -u
может
использоваться суперпользователем для изменения конфигурации планировщика
других пользователей системы.
Конфигурацию планировщика можно сохранить в файле согласно формату, рассмотренному в разделе «Конфигурация планировщика заданий». После этого можно загрузить его во внутренний формат демона планирования с помощью запуска команды crontab:
desktop test # cat /etc/crontab */5 * * * * /usr/bin/vnstat -u 58 * * * * rdate -s ptbtime1.ptb.de desktop test # 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@desktop test $ crontab -l 15:23:04 listing user's fcrontab 0 3 */3 * * backup.sh
...
В ряде UNIX-систем для управления службами может использоваться команда service. Она принимает следующие параметры:
service служба (start|stop|restart)
Третий параметр – это команда на запуск, остановку и перезапуск службы, имя которой указывается вторым параметром. Для запуска этой команды необходимы права суперпользователя.
Пример перезапуска службы печати:
desktop test # service cups restart Stopping cups: [ OK ] Starting cups: [ OK ]
Обычно системные службы располагаются в директории
/etc/init.d
.
Команда chkconfig используется для изменения списка служб, соответствующих тому или иному уровню выполнения системы. Эта команда позволяет Вам указывать, какие службы следует запускать при старте системы, а какие – нет.
Команда имеет следующий синтаксис:
chkconfig (--list|--add|--del) [имя службы] chkconfig [--level уровни] имя службы (on|off|reset)
В первом варианте использования можно посмотреть список установленных в системе служб и уровни выполнения, на которых они запускаются или останавливаются. Например:
desktop test # 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
можно добавлять и удалять
службы из системной загрузки.
desktop test # chkconfig --list | grep autofs autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off desktop test # chkconfig --del autofs desktop test # chkconfig --list | grep autofs desktop test # chkconfig --add autofs desktop test # chkconfig --list | grep autofs autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
В этом примере служба autofs последовательно удаляется из загрузки и добавлется обратно.
Второй вариант команды используется для настройки запуска службы на различных уровнях выполнения. К примеру, эта команда устанавливает запуск службы только на 3-м и 5-м уровнях выполнения:
desktop test # chkconfig --list | grep autofs autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off desktop test # chkconfig --level 35 autofs on desktop test # chkconfig --level 4 autofs off desktop test # chkconfig --list | grep autofs autofs 0:off 1:off 2:off 3:on 4:off 5:on 6:off
На прошедших практических занятиях уже рассматривалась команда who. Здесь будут рассмотрены аналогичные команды, связанные с историей входа пользователей в систему.
Команда last отображает список пользователей, вошедших в систему, отсортированный по времени. Команда имеет ряд параметров, среди которых:
-n
число-t
ГГГГММДДЧЧММССимя пользователя
В этом примере выводится информация о последних семи входах в систему. В первом столбце указано имя пользователя, во втором – терминал или номер графического дисплея, время входа и общее время работы в системе.
user@desktop $ 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@desktop $ 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@desktop $ 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 показывает время последнего входа в систему для всех зарегистрированных пользователей.
desktop # 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
:
desktop # lastlog -u root Username Port From Latest root tty1 Tue Sep 12 23:42:13 +0400 2006
Команда faillog показывает время последней неудачной попытки входа в систему. По параметрам она аналогична команде lastlog.
desktop # faillog Login Failures Maximum Latest On root 2 0 07/06/06 13:28:19 +0400
Для каждого пользователя показывается также общее и максимальное число неверных попыток.
Для каждого из пользователей можно задать максимальное число ошибочных
попыток входа в систему, по достижению которого аккаунт
блокируется. Установить новое значение максимального числа ошибок можно с
помощью параметра -m
. Установка его в
0 означает отсутствие контроля максимального числа неверных попыток.