Содержание
Чаще всего администратору приходится править текстовые конфигурационные файлы, для чего подойдёт множество редакторов или средств командной строки. Здесь рассматриваются два текстовых редактора: маленький и простой joe и более распространённый универсальный редактор vi.
Редактор joe обладает полноценным интерфейсом к консольном режиме. Для открытия файла на редактирование можно запустить команду joe имя_файла. Текущая версия редактора имеет уже достаточно широкие возможности — это: подсветка синтаксиса, одновременное редактирование нескольких файлов, запуск внутренних команд, использование комбинаций клавиш и т. д.
Интересной особенностью редактора является возможность запуска его в одном из «стилей» интерфейсов других распространённых редакторов, таких как 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.
В командном режиме все нажатия клавиш воспринимаются как команды. Длинные
команды удобно набирать в командной строке — в
последней строке экрана, куда можно перейти при нажатии
:
.
Для простейшей работы с редактором 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 служит для переключения уровня выполнения операционной системы (см. раздел «Системы, наследующие 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 [-t секунды] [-k | -r | -h] [-p] время [сообщение]
Для запуска этой команды необходимы права суперпользователя.
В UNIX-системах с уровнями выполнения команда shutdown в зависимости от параметров и ключей фактически переводит систему в один из трёх уровней выполнения:
-k
-r
-h
-p
, который указывает
операционной системе на необходимость выключения питания компьютера (с
использованием APM или ACPI).
Еще одним возможным параметром выполнения команды является время (-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 ...
Эта команда выключает систему сразу после выполнения команды.
Эти команды являются сокращением указанных выше опций команды shutdown и соответсвенно останавливают систему, останавливают с выключением питания и перезагружают систему непосредственно после выполнения команды. Для выполнения этих команд необходимы права суперпользователя.
Команда 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 часа ночи раз в три дня.
В ряде UNIX-систем для управления службами может использоваться команда service. Она принимает следующие параметры:
service служба (start|stop|restart)
Третий параметр — это команда на запуск, остановку и перезапуск службы, имя которой указывается вторым параметром. Для запуска этой команды необходимы права суперпользователя.
Пример перезапуска службы печати:
[root@localhost ~]# service cups restart Stopping cups: [ OK ] Starting cups: [ OK ]
Обычно системные службы располагаются в каталоге
/etc/init.d
.
Команда 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 отображает список пользователей, вошедших в систему, отсортированный по времени. Команда имеет ряд параметров, среди которых:
-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 показывает время последнего входа в систему для всех зарегистрированных пользователей.
[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 показывает время последней неудачной попытки входа в систему. По параметрам она аналогична команде lastlog.
[root@localhost ~]# faillog Login Failures Maximum Latest On root 2 0 07/06/06 13:28:19 +0400
Для каждого пользователя показывается также общее и максимальное число неверных попыток.
Для каждого из пользователей можно задать максимальное число ошибочных
попыток входа в систему, по достижению которого аккаунт
блокируется. Установить новое значение максимального числа ошибок можно с
помощью ключа -m
. Установка его в
0
означает отсутствие контроля максимального числа неверных попыток.