Глава
9. Системное администрирование Linux
Файл
passwd
Удаление
учетных записей
Управление
группами
Регистрация
суперпользователя
Файл
сообщений
Сообщения
об ошибках
Варианты
загрузки
Создание
загрузочного диска
Пакеты
аварийного восстановления
Если
вы забыли пароль
LILO
Планирование
событий
Команда
nice
Команда
at
Команда
batch
Команда
cron
Многозадачность
Дополнительно
о фоновом и обычном режимах
Область
подкачки и быстродействие
Свободная
память
Использование
области подкачки
Подключение
устройств
Сообщение
дня
Итоги
Глава
9. Системное
администрирование
Linux
-
Файл passwd
-
Параметры загрузки
-
Планирование событий
-
Виртуальная память и быстродействие
-
Сообщение дня
На автономном компьютере
с системой Linux вы одновременно являетесь
и пользователем, и системным администратором. Конечно, во время установки
Linux (см. главу 2) и настройки учетной записи пользователя вы играли роль
системного администратора. Поздравляем!
Настройка и создание учетных
записей пользователей ≈ одна из важнейших задач системного администратора.
Если вы собираетесь допустить на компьютер с Linux других людей (коллег
или членов семьи), вам придется создать для них учетные записи с паролями,
группами и основными каталогами. Сделать
это несложно, однако этот навык сильно пригодится вам в процессе дальнейшего
освоения Linux.
Системное администрирование Linux
ничем принципиально не отличается от администрирования других UNIX-систем.
Все действия, описанные в этой главе, справедливы для всего мира UNIX,
а опыт администрирования других UNIX-систем поможет разобраться с Linux.
Системное администрирование ≈ это целый
мир. В своем кратком введении мы лишь едва соприкоснемся с азами системного
администрирования UNIX. Как мы узнали на собственном опыте, системное администрирование
лучше всего изучать на практике. Вероятно, вам не удастся нарушить работоспособность
Linux, разве что вы начнете перекомпилировать ядра, возиться с загрузочными
записями и т. д. Действия, описанные в этой главе, не будут иметь необратимых
последствий.
Файл passwd
Информация о пользователях
Linux хранится в файле /etc/passwd
(не путать с командой passwd!). В этом файле хранятся многие сведения о
конфигурации системы, о чем свидетельствует следующий фрагмент:
halt:x:7:0:halt:/sbin:/shin/halt
ореrator:х:11:0:ореrator:/root:/bin/bash
root:x:0:0::/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
bin:x:1:1:bin:/bin:
ftp:x:404:1::/home/ftp:/bin/bash
daemon:x:2:2:daemon: sbin:
adm:x:3:4:adm:/var:adm:
lp:x:4:7:Ip:/var/spool/lpd:
mail:x:8:12:mail:/var/spool/mail:
postmaster:x:14:12:postmaster:/var/spool/mail:/bin/bash
news:x:9:13:news:/usr/lib/news:
uucp:x:10:14:uucp:/var/spool/uucppublic:
man:x:13:15:man:/usr/man:
games:x:12:100:games:/usr/games:
nobody:x:65534:100:nobody:/dev/null:
kevinr:x:1000:100:Kevin Reichard,,,:/home/kevinr:/bin/bash
Большинство параметров определяет
путь, связанный с конкретной командой (например, путь для man-страниц).
Если вам захочется изменить стандартные значения, отредактируйте этот файл
(например, если вы используете uucp
для подключения к другим системам, а другие системы связываются с вашей,
в файле passwd можно изменить путь
uucp по умолчанию).
Однако нас больше всего интересует
последняя строка файла, в которой описывается конфигурация пользователя
kevinr:
kevinr:x:1000:100:Kevin Reichard,,,:/home/kevinr:/bin/bash
На примере компонентов этой
строки мы посмотрим, как информация о пользователях хранится в Linux:
-
kevinr ≈ имя пользователя.
-
х ≈
заменитель пароля. Настоящий зашифрованный текст пароля хранится в отдельном
файле /etc/shadow. Для повышения безопасности
системы файл /etc/shadow может читаться
только привилегированным пользователем root.
Звездочка (*) вместо х в этом поле
означает, что учетная запись заблокирована (см. ниже в этой главе).
-
1000 ≈ идентификатор
(ID) пользователя; число, по которому система
следит за учетной записью. В операциях с правами доступа и т. д. вместо
строки kevinr система использует числовой
идентификатор 1000.
-
100 ≈ идентификатор группы (о
группах будет рассказано ниже в этой главе).
-
Kevin Reichard ≈ полное имя
пользователя; в этом поле может содержаться дополнительная информация о
пользователе.
-
/home/kevinr ≈ основной каталог
пользователя.
-
/bin/bash ≈ оболочка пользователя
по умолчанию.
Не все поля должны обязательно
заполняться, однако для пустых полей необходимо зарезервировать место в
виде двоеточия (:).
Как видно из приведенного
примера, строка привилегированного пользователя root
несколько отличается от строки обычного пользователя; вместо идентификаторов
пользователя и группы указываются нули.
Файл passwd
используется для проверки текущей конфигурации пользователей, а не для
ввода данных о новых пользователях. В нем можно вносить изменения, которые
будут отражаться на уровне всей системы; например, для смены идентификатора
пользователя достаточно отредактировать соответствующее число в строке
пользователя. Однако подобное редактирование может вызвать проблемы. Поскольку
принадлежность файлов и членство в группах определяются системой по идентификатору
пользователя, а не его имени, после подобных изменений все файлы,
ранее принадлежавшие пользователю, остаются без владельца, и его придется
назначать вручную командой chown. Если
смена идентификатора не является абсолютно необходимой, лучше этого не
делать.
Команда adduser,
с который вы познакомились в главе 2, добавляет в систему новых пользователей.
Привилегированный пользователь может в любой момент выполнить эту команду:
gilbert:/# adduser
Удаление
учетных записей
Оборотная сторона создания
учетных записей ≈ это, конечно, удаление. Тем, кто работает в небольшой
системе, не придется беспокоиться об удалении записей (кроме ситуаций,
когда обиженный работник может навредить).
Однако удаление учетной записи
≈ задача многогранная, потому что из Linux необходимо
удалить все ссылки на данного пользователя. Для этого необходимо:
-
Удалить строку пользователя
из /etc/passwd.
-
Удалить основной каталог пользователя
(для этого можно воспользоваться командной строкой rm -r,
предварительно убедившись, что в каталоге не осталось ничего ценного).
-
Назначить нового владельца для
файлов удаляемого пользователя.
-
Удалить ссылки на пользователя
из файлов групп (см. следующий раздел).
-
Завершить все задания сrоn или
at, запущенные пользователем (см. ниже).
-
Проследить за тем, чтобы почтовая
подсистема перестала подтверждать факт существования пользователя.
Кроме того, необходимо
удалить почтовый файл пользователя, находящийся в каталоге /usr/spool/mail
(имя файла совпадает с именем пользователя). Основная часть этой работы
может выполняться автоматический командой userdel. Например,
для удаления учетной записи kevinr
введите следующую команду:
userdel -r kevinr
Учетную запись можно временно
заблокировать, вместо того чтобы удалять ее навсегда. Для этого достаточно
ввести звездочку (*) во втором поле файла /etc/passwd. Следующая строка
временно блокирует учетную запись kevinr:
kevinr:*:1000:100:Kevin Reichard,,,:/home/kevinr:/bin/bash
Управление
группами
В мире UNIX
группы традиционно использовались для предоставления совместного доступа
к некоторым файлам. Каждый, кто работал в сети, понимает: ограничение доступа
к файлам для определенного круга пользователей повышает безопасность и
упрощает выполнение организационных задач.
В Linux
также поддерживается концепция групп: владельцами каждого файла является
пользователь и группа. С помощью командной строки ls -l
(буква 1) можно получить полную информацию о режиме доступа к файлу:
gilbert:~$ Is -I
-rwxrw-r--1 kevinr users 87619 Apr
23 23:39 addresses.dat
Таким образом мы узнаем, что
владельцами файла addresses.dat являются
отдельный пользователь kevinr и группа
users; kevinr имеет права чтения, записи и
исполнения файла, а группа users ≈права
чтения и записи. Все остальные пользователи могут только читать файл.
Содержимое типичного файла
/etc/group выглядит так:
root::0:root
bin::1:root,bin,daemon
daemon::2:root,bin.daemon
sys::3: roor,bin,adm
adm::4:root,adm,daemon
tty:: 5:
disk::6:root,adm
Ip::7:Ip
mem::8
kmem::9:
wheel::10:root
floppy::11: root
mail::12:mail
news::13:news
uucp::14:uucp
man::15:man
users::100:kevinr,pat,erc
execs::101:kevinr,pat
nogroup::-1:
Как видите, основная часть содержимого
файла /etc/group относится не столько к группам пользователей, сколько
к приложениям и правам владения. Строки, относящиеся к группам пользователей,
отличить нетрудно ≈ они имеют номера 100 и выше (правило Linux). В приведенном
примере для групп пользователей зарезервированы две следующие строки:
users::100:kevinr,pat,erc
execs::101:kevinr,pat
На самом деле эти сведения неполны
≈ двойное двоеточие свидетельствует о пропущенном поле. Обычно строки файла
/etc/group имеют следующий формат:
имя_группы:пароль:идентификатор_группы:пользователи
Поле оставлено пустым, потому
что в большинстве систем не создаются пароли для групп. Оставляет ли это
зияющую брешь в системе безопасности? Вопрос спорный; честно говоря, создание
паролей для группы оборачивается лишь ненужными хлопотами. Как правило,
эти пароли не используются, а в исключительных случаях следует подумать
о приобретении совершенных средств системного администрирования
UNIX.
Регистрация
суперпользователя
Если вы хотите выполнять
функции привилегированного пользователя root (например,
для добавления и удаления пользователей), необязательно выходить из системы
и регистрироваться заново под именем root.
Вместо этого можно зарегистрироваться под именем su
(сокращение от superuser, то есть ⌠суперпользователь■
):
gilbert:~$ su
gilbert:/home/kevinr#
Обратите внимание: ранее основной
каталог обозначался тильдой (~), но после регистрации суперпользователя
он принял другой вид ≈ /home/kevinr.
В пользу регистрации суперпользователя
существует еще один веский довод (кроме возможности регистрации других
суперпользователей при наличии нескольких администраторов в сети): если
кто-то зарегистрировался под именем root,
система лишь замечает, что в ней появился пользователь root.
Но если для получения привилегий root
была использована команда su, в файле /var/log/ messages
появляется следующая запись:
Арг 27 22:06:30 gilbert su: kevinr
on /dev/tty1
Чтобы завершить работу с системой
в режиме суперпользователя, введите команду exit
или bye:
gilbert:/home/kevinr# exit
exit
gilbert:~$
Файл сообщений
Файл /var/log/messages
может оказать существенную помощь при диагностике проблем в системе
Linux, поскольку в нем регистрируется вся
деятельность системы и системная конфигурация в момент загрузки Linux.
В следующем фрагменте приведены сообщения, записанные в /var/log/messages
при загрузке Linux:
Kernel logging (proc) started.
Console: colour EGA+ 80х25, 1 virtual
console (max 63)
Serial driver version 4.00 with no
serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: Ip0 exists, using polling
driver
ftape: allocated 3 buffers aligned
at: 00230000
SBPCD version 2.6 Eberhard Moenkenberg
<emoenke@gwdg.de>
SBPCD: Looking for a SoundBlaster/Matsushita
CD-ROM drive
SBPCD:
SBPCD: ==========WARNING==========
SBPCD: Auto-Probing can cause a hang
(f. e. touching an etnernet
card).
SBPCD: If that happens, you have to
reboot and use the
SBPCD: LILO (kernel) command-line
feature like:
SBPCD:
SBPCD: LILO boot: linux sbpcd=0x230,SoundBlaster
SBPCD: or like:
SBPCD: LILO boot: linux sbpcd=0x300,LaserMate
SBPCD: or like:
SBPCD: LILO boot: linux sbpcd=0x330,SPEA
SBPCD:
SBPCD: with your REAL address.
SBPCD: ========= END of WARNING ==========
SBPCD:
SBPCD: Trying to detect a SoundBlaster
CD-ROM drive at ox230.
SBPCD: - Drive 0: CR-563-x (0.80)
SBPCD: 1 SoundBlaster CD-ROM drive(s)
at 0х230,
SBPCD: init done.
Calibrating delay loop.. ok - 25.04
BogoMips
scsi: 0 hosts
Memory: 14562k/16384k available (976k
kernel code, 384k reserved,
372k data)
This processor honours the WP bit
even when in supervisor mode.
Good.
Floppy drive(s): fd0 is 1.44M
FDC 0 is a 8272A
Swansea University Computer Society
NET3.017
Swansea University Computer Society
TCP/IP for NET3.017
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS
OPTIMIZE_FLAGS
TCP compression code copyright 1989
Regents of the University of
California
PPP line discipline registered.
SLIP: version 0.7.5-NET3.014-NEWTTY
(4 channels)
CSLIP: code copyright 1989 Regents
of the University of California
eth0: 3c505 not found
eth0: D-link DE-600 pocket adapter:
not at I/O 0х378.
D-Link DE-620 pocket adapter not identified
in the printer port
Checking 386/387 coupling... Ok, fpu
using exception 16 error reporting.
Checking 'hit' instruction... Ok.
Linux version 1,1.59 (root@fuzzy)
(gcc version 2.5.8) #5 Sat Oct 29
15:50:31 CDT 1994
Partition check:
hda: WDC AC2340H. 325MB W/128KB Cache,
CHS=1010/12/55,
MaxMult=16
hda: hda1 hda2
VFS: Mounted root (ext2 filesystem)
readonly.
Max size:332509 Log zone size:2048
First datazone: 152 Root inode number
155648
ISO9660 Extensions: RRIP_1991A
gilbert login: ROOT LOGIN ON tty
Смысл большинства сообщений
вполне очевиден, но мы прокомментируем некоторые строки в порядке их появления.
Первая строка говорит о том, что система начала процесс инициализации.
В следующей строке указано разрешение, в котором работает Linux:
Console: colour EGA+ 80х25, 1 virtual
console (max 63)
Разрешение относится только
к работе в текстовом режиме, не к Х Window System.
Далее перечисляются устройства PC с
последовательным интерфейсом и соответствующие им IRQ:
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
Как упоминалось в главе 2,
tty00 ≈ эквивалент СОМ1, первого последовательного
порта. В строке также сообщается о том, что последовательный пор использует
чип UART 16450, предназначенный для
быстрого обмена данными.
В строках, начинающихся с
SBPCD, происходит настройка звуковой карты
SoundBlaster
Pro/CD-ROM. Система автоматически опрашивает
устройство, чтобы убедиться в его нормальной работе. В следующей строке
выводится объем оперативной памяти:
Memory: 14652k/16384k available (976k
kernel code, 384k reserved,
372k data)
В данном примере Linux
видит все 16 мегабайт памяти, установленной на компьютере. Далее указывается
флоппи-дисковод, который Linux опознает как 3,5-дюймовый дисковод высокой
плотности, которому соответствует файл устройства /dev/fd0:
Floppy drive(s): fd0 is 1.44M
Следующая строка сообщает о
том, что поиск адаптера Ethernet закончился
неудачей ≈ ничего удивительного, потому что на этом компьютере такого устройства
нет:
eth0: 3c505 not found
Однако ниже говорится о том,
что компьютер поддерживает протоколы удаленной регистрации SLIP
и РРР, а следовательно, может зарегистрироваться на Интернет-хосте:
Swansea University Computer Society
NET3.017
Swansea University Computer Society
TCP/IP for NET3.017
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS
OPTIMIZE_FLAGS
TCP compression code copyright 1989
Regents of the University of
California
PPP line discipline registered.
SLIP: version 0.7.5-NET3.014-NEWTTY
(4 channels)
CSLIP: code copyright 1989 Regents
of the University of California
Следующая строка сообщает, что
дисковод CD-ROM поддерживает расширения
ISO9660:
ISO9660 Extensions: RRIP_1991A
Наконец, в последней строке
зафиксирована регистрация привилегированного пользователя root
в системе:
gilbert login: ROOT LOGIN ON tty1
Сообщения
об ошибках
В предыдущем разделе был
приведен лишь небольшой фрагмент файла /var/log/messages.
Даже после непродолжительного использования Linux
этот файл становится очень большим. В частности, в нем содержатся сведения
о том, кто и когда регистрировался в системе, даже если попытка регистрации
была неудачной:
Маr 31 14:48:51 gilbert login: 1
LOGIN FAILURE ON tty1, root
Для просмотра сообщений, относящихся
к последней загрузке, воспользуйтесь командой dmesg.
Выходные данные занимают немало места, поэтому мы рекомендуем перенаправить
вывод в less:
dmesg | less
Варианты
загрузки
В главе 2 мы описали процесс
установки Linux. При этом основное внимание уделялось загрузке системы
с помощью loadlin. Но не стоит думать,
что loadlin ≈ единственный способ запустить
Linux. В этом разделе мы рассмотрим другие варианты, начиная с создания
загрузочного диска и заканчивая LILO.
Создание
загрузочного диска
При установке Linux с
CD-ROM вам было предложено создать загрузочный
гибкий диск. Возможно, вы отказались и подумали: ⌠Обойдемся без загрузочных
дисков!■
А потом возникает проблема
с загрузкой Linux. Например, из-за маленькой ошибки при компиляции ядра
Linux выдает массу панических сообщений об ошибках и не загружается. А
может, вы попытались перейти на новое ядро и обнаружили, что система перестала
загружаться. Тогда вы начинаете сокрушаться и проклинать себя за то, что
когда-то поленились создать загрузочный диск.
Загрузочный гибкий диск содержит
корневой раздел, позволяющий разгрузить ядро Linux. На PC
загрузка осуществляется с нулевого сектора нулевого цилиндра загрузочного
диска, и на многих компьютерах загрузочная информация сначала ищется на
диске А:. Если информация не найдена (как правило, дело обстоит именно
так), PC просматривает нулевой сектор
нулевого цилиндра жесткого диска (проверьте настройки BIOS ≈
например, в расширенной настройке популярных AMD BIOS
предусмотрена возможность изменения загрузочного диска).
Загрузка системы Linux с
жесткого диска означает лишь то, что в начале этого диска находится ядро
или LILO, что гарантирует загрузку Linux. Соответствующие данные хранятся
в файле vmlinuz; в процессе загрузки
этот сжатый файл распаковывается и запускается. Такой же файл существует
на жестком диске. Файлы отличаются только носителями, а не содержимым ядра.
При загрузке с гибкого диска загружается ядро, которое затем обращается
к жесткому диску за остальными файлами операционной системы. Такая возможность
оказывается полезной при тестировании нового ядра.
Некоторые пользователи предпочитают
загружать систему с гибких дисков, потому что в этом случае загрузочный
сектор жесткого диска может использоваться другой операционной системой.
Никто не запрещает вам загрузить Linux с
гибкого диска и зарезервировать загрузочные данные жесткого диска для DOS
или Windows.
Программа Slackware
setup содержит все средства, необходимые для
создания загрузочных гибких дисков. Команда Slackware makebootdisk
позволяет создать загрузочный диск без необходимости повторного прохождения
всех меню программы setup. При запуске
команды достаточно указать имя нужного файла ядра:
makebootdisk zImage
Makebootdisk выводит простое
меню, позволяющее создать один или несколько загрузочных дисков Linux.
Это могут быть загрузочные диски LILO
(содержащие маленький корневой раздел и обладающие более широкими возможностями)
или простые загрузочные диски (содержащие только файл ядра, записанный
прямо на диск).
Пакеты
аварийного восстановления
В мире Linux существуют
пакеты аварийного восстановления, которые позволяют создавать диски, специально
предназначенные для ситуаций, когда загрузка с гибкого диска становится
неизбежной. Конечно, средства аварийного восстановления присутствуют и
в Slackware Linux. Во-первых, это корневой
диск rescue.gz, который может использоваться
с любым загрузочным диском Slackware
и обеспечивает небольшую систему Linux с редактором и утилитами восстановления
диска. Ниже перечислены эти пакеты, которые можно найти в Интернете по
адресу sunsite.unc.edu/pub/Linux/system/recovery/.
Bootkit
Утилита Bootkit,
написанная Скоттом Баркеттом, использует меню для создания загрузочных
дисков (как для загрузки, так и для восстановления содержимого разрушенной
системы). Находится в файле Bootkit-1.01.tar.gz.
Catrescue
Утилита Catresque,
написанная Олегом Кибиревым, создает диски аварийного восстановления и
предоставляет полезную информацию для восстановления системы после сбоя.
Находится в файле Catresquel0lE.tgz.
Picoboot
Утилита загружает систему
Linux и запускает редактор pico. Находится
в файле picoboot-0.95.tar.gz.
Rescue Shell Scripts
Пакет Rescue Shell
Scripts, написанный Томасом Хейлингом, содержит
сценарии оболочки для создания загрузочных и загрузочных/корневых дисков.
Находится в файле resque_disk-2.0.2.2.tar.gz.
Если вы
забыли пароль
Такое случается с каждым
≈ особенно при работе на компьютерах, где не приходится ежедневно регистрироваться.
Пользователь может забыть свой пароль, но системный администратор располагает
средствами для изменения пароля и создания новых учетных записей.
С другой стороны, системному
администратору приходится быть непогрешимым. Если вы забудете свой пароль,
никто не спасет вас из беды. Забытый пароль ≈ еще одна веская причина для
создания загрузочного гибкого диска. В этом случае вам достаточно загрузить
компьютер с гибкого диска, подключить раздел /root
(при необходимости), удалить существующий зашифрованный пароль из файла
/etc/shadow (текст между первыми двоеточиями)
и перезагрузить систему с жесткого диска. После этого можно создать новый
пароль.
Пусть этот раздел послужит
напоминанием для всех, кто считает свою систему Linux
безопасной, ≈ они заблуждаются. Если систему удается загрузить с гибкого
диска, вы получаете доступ ко всей файловой системе.
LILO
В первом издании этой книги
мы советовали устанавливать Linux с помощью LILO (LInux LOader,
то есть ⌠загрузчик Linux■). В этом издании мы уже не рекомендуем этого
делать. Причина проста: выяснилось, что новым пользователям намного удобнее
пользоваться loadlin. LILO ≈ программа
суровая, не прощающая слабостей. Если допустить ошибку при настройке LILO,
скорее всего, загрузочная запись компьютера будет испорчена (еще одна причина
для создания загрузочного гибкого диска!). Кроме того, в наши дни, когда
на PC мирно сосуществует несколько
операционных систем, многие пользователи хотят иметь возможность выхода
в Linux из другой операционной системы. В таких условиях оптимальным вариантом
оказывается loadlin.
Тем не менее некоторые пользователи
предпочитают выполнять загрузку с помощью LILO. Мы всегда стараемся предоставить
выбор своим пользователям ≈ особенно опытным пользователям. Поэтому мы
сейчас познакомимся с LILO.
Что такое LILO?
Программа LILO управляет
главной загрузочной записью (Master Boot Record, MBR)
загрузочного диска. При включении компьютера BIOS
ищет в MBR инструкции, касающиеся дальнейшей
загрузки.
Устанавливая LILO, вы приказываете
MBR вызывать программу LILO при загрузке. LILO можно запрограммировать
на загрузку Linux после определенной паузы или на загрузку других операционных
систем (например, DOS или OS/2).
В действительности
LILO ≈ программа несложная, а описанный ниже
процесс конфигурации делает ее еще проще. LILO работает с файлом конфигурации,
автоматически сгенерированным программой setup.
На эту программу можно перейти в любой момент. Например, вы можете на первых
порах использовать loadlin, а затем
перейти на LILO на новой стадии освоения Linux.
Прежде всего необходимо запустить процесс командой setup
и выбрать операционную систему, которая будет указана в файле конфигурации
LILO. Поскольку основной загружаемой системой будет Linux, именно эта система
указывается в первую очередь. Затем в качестве дополнительных вариантов
загрузки перечисляются другие операционные системы (например, MS-DOS
или OS/2). На первом месте в файле конфигурации будет стоять система Linux.
После завершения настройки файл принимает следующий вид:
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot=/dev/hda
#compact # faster, but won't work
on all systems.
delay = 50
vga = normal # force sane state
ramdisk = 0 # paranoia setting
# End LILO global section
# Linux bootable partition config
begins
image = /vmlinuz
root = /dev/hda2
label = Linux
read-only # Non-UMSDOS filesystems
should be mounted read-only for
checking
# Linux bootable partition config
ends
# DOS bootable partition config begins
other = /dev/hda1
label = DOS
table = /dev/hda
# DOS bootable partition config ends
Сведения о конфигурации
LILO хранится в файле /etc/lilo.conf.
Кроме того, вам будет предложено
выбрать паузу перед загрузкой Linux. Одна из удобных возможностей LILO
заключается в том, что вы можете выбрать промежуток времени (5 секунд или
30 секунд) между загрузкой LILO и началом загрузки операционной системы.
В файле /etc/lilo.conf этот промежуток
представлен числом 50 (для 5 секунд) или 300 (для 30 секунд). Во время
паузы можно выбрать другую операционную систему в том случае, если вместо
Linux требуется загрузить DOS или OS/2.
При нажатии левой клавиши Shift после
загрузки LILO на экране появляется приглашение:
boot:
Если выбрать DOS,
система загружается в раздел DOS (конечно,
при условии, что этот раздел был назначен загрузочным). Клавиша
Tab выводит список возможных вариантов.
Если вы используете программу
Boot Manager системы OS/2, можно создать с
ее помощью первичный загрузчик, а затем загрузить Linux
с помощью LILO.
Удаление LILO
Существует несколько способов
удалить LILO. Версия LILO на прилагаемом CD-ROM
удаляется из загрузочного сектора следующей командой:
gilbert:~$ lilo -u
Другой вариант ≈ выполнение
следующей команды при работе в DOS:
C:\>FDISK /MBR
Эта команда передает управление
загрузочной записью системе DOS.
Планирование
событий
В Linux существует несколько
средств системного администрирования, которые позволяют выполнять определенные
события в назначенное время, ≈ например, создание резервной копии системы
часто выполняется по ночам. Средства планирования описаны в нескольких
следующих разделах.
Команда
nice
Иногда вы запускаете программу,
не особенно беспокоясь о том, когда она завершится, ≈ например, если программа
запускается перед обеденным перерывом. Если время выполнения несущественно
(особенно в больших, многопользовательских системах, чьих вычислительных
мощностей хватает на многих пользователей), можно использовать команду
nice в сочетании с другими командами. Команда
nice названа так потому, что ваша программа
⌠хорошо себя ведет■ в системе. Она указывается в начале командной строки:
gilbert:~$ nice команда имя_файла
Например, если вы запускаете
невероятно сложную сортировку с участием множества файлов, лучше сделать
это командой nice перед двухчасовым
обеденным перерывом.
Команда
at
Конечно, иногда обед затягивается
на три, а то и на четыре часа. Если вы не уверены, что вовремя вернетесь
на работу и сможете запустить важную программу, воспользуйтесь командой
at.
А если говорить серьезно,
команда at обычно используется для
снижения нагрузки системы. Она позволяет запустить ночью программу, которая
поглощает много системных ресурсов; отправить почту, пока действует льготный
тариф; организовать периодическое резервное копирование большого жесткого
диска.
Воспользоваться at
несложно. Параметр команды at определяет
время выполнения:
gilbert:~$ at 11am
Команда at
предоставляет большую свободу в формате времени запуска. В частности, время
может указываться в 12-часовом (как в нашем примере) или в 24-часовом формате.
После нажатия клавиши
Enter (или Return)
вы переходите на следующую строку без приглашения. Таким способом
Linux запрашивает дополнительные данные (впрочем,
бывают и исключения). Здесь вводятся команды, выполняемые at.
После ввода очередной команды нажимайте Enter
(или Return). Ввод завершается клавишами
Ctrl+D.
Идентификатор задания ≈ чрезвычайно
ценная информация. Чтобы просмотреть список заданий, ожидающих выполнения,
выполните команду at с параметром -l:
gilbert:~$ at -l
Для многократно выполняемых
процедур вместо at лучше воспользоваться
командой сrоn, рассмотренной ниже.
Команда
batch
Команда batch
объединяет несколько команд в один пакет, который выполняется в фоновом
режиме, не требуя вашего вмешательства. Сначала введите команду
batch:
gilbert:~$ batch
Завершите команду клавишей
Enter (или Return).
Команда batch, как и at, переходит
на новую строку и ждет ввода дополнительных данных. Введите команды, нажимая
после каждой клавишу Enter (или
Return). Ввод команд завершается клавишами
Ctrl+D.
На экране появляется системное
приглашение. Продолжайте работать, а команды пакета будут последовательно
выполняться системой. Если команда выводит некоторое подтверждающее сообщение
или результаты, эта информация будет доставлена вам в виде почтового сообщения.
Информация не будет неожиданно возникать на экране, пока вы заняты
чем-то другим.
В этой книге мы обсуждали
выполнение программ в фоновом режиме с использованием символа ⌠амперсанд■
(&). Между фоновыми задачами и batch
существуют некоторые принципиальные отличия:
-
Командам, выполняемым
batch, назначается более низкий приоритет,
чем выполняемым в фоновом режиме.
-
Команды batch
продолжают работать даже в том случае, если вы выходите из системы. Фоновые
задачи при выходе уничтожаются.
-
Если фоновой задаче потребуется
что-либо вывести или отправить подтверждение, она вмешивается в вашу текущую
работу. Batch этого не делает; информация
пересылается в виде почтового сообщения.
Команда
cron
Все самое интересное достается
системным администраторам ≈ во всяком случае, так было раньше, о чем свидетельствует
команда cron. Когда-то команда cron считалась средством системного администрирования
и позволяла системным администраторам планировать периодическое выполнение
некоторых задач.
Почему нужно использовать
cron? Потому что эта команда позволяет планировать автоматическое выполнение
повторяющихся операций. Например, можно ежедневно или еженедельно архивировать
данные на ленте. Или отправить себе самому почтовое сообщение с напоминанием
о важных событиях, не имеющих отношения к компьютерам. Или отправлять электронную
почту в другие UNIX-системы поздно ночью, когда действует льготный междугородный
тариф.
Нечто похожее делает и команда
at. Тогда для чего нужна команда cron? Для
выполнения повторяющихся задач. Команда at
выполняет одну конкретную задачу в указанное время. Поскольку пользоваться
ей намного легче, мы рекомендуем использовать ее для одноразовых задач
и приберечь cron для повторяющихся действий.
Cron состоит из двух частей:
собственно команды cron и файла crontab.
Создание файла crontab
В файле crontab перечисляются
задачи для регулярного выполнения. Ваш личный файл crontab
находится в каталоге /usr/lib/crontab.
Он не создается автоматически в процессе установки Linux.
Вы должны сами создать этот файл, хотя делается это косвенно. Вопросы создания
и структуры файла crontab могут вызвать
затруднения.
Для создания файла crontab
можно воспользоваться текстовым редактором (например, elvis
или emacs). Тем не менее файл нельзя
сохранить прямо в каталоге /usr/lib/crontab.
Он сохраняется в другом каталоге, а затем переносится командой cron. Мы
опишем типичный процесс создания и перенесения файла crontab.
Строки файла crontab
состоят из шести полей, разделенных запятыми. Первые пять полей точно определяют
момент выполнения команды, а в шестом поле указывается сама команда.
Предположим, команда должна
запускаться каждое утро в 8:30. В этом случае строка файла crontab
будет выглядеть так:
30 8 * * * command
Смысл всех пяти полей описан
в табл. 9.1.
Таблица 9.1. Поля в строках
файла crontab
Поле
|
Значение
|
1 |
Количество
минут |
2 |
Час
(в 24-часовом формате) |
3 |
Число |
4 |
Месяц |
5 |
День
недели |
При создании файла
crontab необходимо помнить следующее:
-
О Звездочка (*)
показывает, что команда должна выполняться для любых значений данного поля.
Например, звездочка в третьем поле означает, что команда запускается ежедневно;
в четвертом поле ≈ ежемесячно, а в
пятом ≈ еженедельно.
-
О Дни недели нумеруются довольно
странным образом. Нумерация начинается с 0
(воскресенье) и заканчивается 6 (суббота).
Как известно, программисты (особенно работающие в UNIX)
в отличие от простых смертных нумеруют объекты не с 1,
а с 0.
-
О Время указывается в 24-часовом
формате. Таким образом, 10 часов вечера
записываются как 22 часа.
-
О Вместо конкретной даты и времени
можно указывать перечисления и интервалы. Например, если команда должна
выполняться по 15-м и 30-м числам месяца, в третьем поле вводится строка
15,30 (не забудьте внести поправку в феврале).
А можно потребовать, чтобы команда выполнялась только в осенние месяцы
≈ введите в четвертом поле 9-11.
Эти два способа можно комбинировать: скажем, 4-6,9-11
в четвертом поле означают, что команда выполняется только в весенние и
осенние месяцы.
После создания файла
crontab (который следует сохранить под любым
именем, кроме crontab; назовем его
ourfile) он переносится командой crontab:
gilbert:~$ crontab ourfile
Сron берет файл ourfile,
копирует его и сохраняет копию под именем /usr/lib/ crontab/ourname,
где ourname ≈ ваше имя пользователя.
Если вам потребуется внести изменения в конфигурацию cron, отредактируйте
исходный файл (он никуда не исчез ≈ сrоn лишь создает копию) и переустановите
его командой crontab с параметром -r:
gilbert: ~$ crontab -r
Для предотвращения случайных
повреждений вам разрешается доступ только к вашему собственному файлу
crontab.
Примеры содержимого crontab
Команда crontab
-l выводит содержимое файла crontab
для вашего имени пользователя. Например:
gilbert: ~$ crontab -l
15 3 * * * /bin/bash /u/erc/my_backup
В этом примере ночь в 3:15 сrоn
будет запускать оболочку bash и выполнять
сценарий my_backup, находящийся в каталоге
/u/erc. Вероятно, этот сценарий архивирует на ленте содержимое некоторых
каталогов, а в 3:15 ночи он вызывается из-за того, что в это время компьютер
практически не занят.
Если данные должны архивироваться
только по понедельникам, строка файла crontab
будет выглядеть так:
15 3 * * 1 /bin/bash /u/erc/my_backup
Время выполнения сценария осталось
прежним (3 часа 15 минут).
Чтобы выполнять архивацию
1-го и 15-го числа каждого месяца, воспользуйтесь следующей строкой:
15 3 1,15 * * /bin/bash /u/erc/my_backup
На этом наше знакомство с планированием
задач в Linux подходит к концу.
Многозадачность
Фоновое выполнение команд
было кратко рассмотрено в главе 8. Настало время вернуться к этой теме.
Термин ⌠многозадачность■
на компьютерном жаргоне означает, что операционная система может одновременно
делать несколько дел. Формулировка звучит просто, но на практике дело обстоит
сложнее. Пользователи персональных компьютеров в течение нескольких лет
мечтали иметь многозадачную операционную систему (хотя при этом они почему-то
игнорировали OS/2, в которой многозадачность организована практически так
же, как и в Linux).
В документации по Linux редко
встречается термин ⌠многозадачность■ (хотя используется всем компьютерным
миром). Linux чаще называется не многозадачной, а многопроцессной
(multiprocessing) операционной системой ≈
то же самое, только по-другому выраженное. При выполнении команды Linux
(например, ls или cat)
вы запускаете процесс. Во время загрузки операционной системы Linux
запускается целая серия процессов, хотя на первый взгляд этого и не видно
(а в графических средах вроде Х Window System
запускается очень, очень много процессов). В больших многопользовательских
системах количество одновременно работающих процессов может достигать нескольких
тысяч.
Процессы соревнуются друг
с другом за ресурсы системы. Запуск программ в фоновом режиме позволяет
организовать эффективное распределение ресурсов. Это помогает предотвратить
замедление работы, особенно в больших многопользовательских системах с
нехваткой ресурсов. Если работающие процессы не помещаются в оперативной
памяти компьютера, Linux использует часть жесткого диска для временной
выгрузки содержимого памяти ≈ эта операция называется подкачкой
(swapping). Разделы подкачки уже упоминались
в главе 2. Позднее вы научитесь создавать файл подкачки после установки
Linux. Однако жесткие диски работают намного медленнее памяти, поэтому
подкачка не всегда желательна. Впрочем, на PC
этот выход может оказаться единственным.
Эффективное распределение
ресурсов является важной задачей как для системы Linux, так и для пользователя.
Распределение ресурсов в Linux (как и многое другое) выполняется иерархически:
одни процессы подчиняются другим (по аналогии с тем, как подкаталоги входят
в каталоги), при этом один процесс
находится в верху пирамиды. При запуске одного процесса другим используется
системная функция fork, которая создает
новый процесс.
При загрузке системы Linux
первый процесс (процесс 1) запускает программу init,
которая в свою очередь запускает остальные процессы. Программа init
является
⌠предком■ всех процессов, или, в терминологии Linux, родителем (parent)
всех ресурсов, которые, в свою очередь, выполняют функции родителей для
остальных процессов, называемых дочерними (child processes).
Init в конечном счете является предком всех
процессов, работающих в системе.
При описании оболочек и их
значения для работы программ мы говорили о том, что оболочка выполняет
функции родителя и управляет дочерними процессами. Оболочка ждет, пока
вы запустите дочерний процесс, и снова отображает приглашение лишь после
завершения или уничтожения (командой kill)
дочернего процесса. Возможны и другие варианты, из которых самым распространенным
является запуск в фоновом режиме. Если дочерний процесс погибает, но родительский
процесс об этом ничего не знает, дочерний процесс превращается в зомби
(zombie). Какая жуткая метафора!
Операционная система наблюдает
за родительскими и дочерними процессами и следит за тем, чтобы они не конфликтовали
друг с другом. Для этого она выделяет каждому процессу квант процессорного
времени и заботится о том, чтобы каждый процесс получил драгоценные ресурсы
процессора. Кроме того, операционная система через программу init
управляет теми дочерними процессами, которые были покинуты своими родителями.
Такие брошенные процессы называются сиротами (orphans).
Возможно, мы несколько шутливо
отнеслись к высокому уровню абстракции, присущему операционной системе
Linux, и экзотическим терминам (процессы ⌠родительские■
и ⌠дочерние■, ⌠сироты■ и ⌠зомби■). В действительности все это очень полезно
≈ пользователям и программистам становится проще представить себе совершенно
нематериальные понятия.
Чтобы узнать, какие процессы
работают на вашем компьютере, воспользуйтесь командой ps:
gilbert:~# ps
PID TTY STAT TIME COMMAND
49 v02 S 0:00 /sbin/getty tty2 38400
console
50 v03 S 0:00 /sbin/getty tty3 38400
console
51 v04 S 0:00 /sbin/getty tty4 38400
console
52 v05 S 0:00 /sbin/getty tty5 38400
console
53 v06 S 0:00 /sbin/getty tty6 38400
console
73 v01 S 0:01 bash
57 v01 S 0:00 sh /usr/x11/bin/startx
258 v01 S 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc
-
260 v01 S 0:00 twm
262 v01 S 0:00 /usr/bin/x11/oclock
-geom 100х100+0+6
263 v01 S 0:00 /usr/bin/x11/xterm
-ls -geom 80х24+3+372
264 v01 S 0:00 /usr/bin/X11/xterm
-Is -geom 80х24+264+13
265 pp1 S 0:01 -bash
266 pp0 S 0:00 -bash
293 pp1 R 0:00 ps
48 v01 S 0:00 -bash
Поскольку команда была выполнена
на автономном компьютере с Х Window, список
работающих процессов оказался не очень длинным. В большой многопользовательской
системе он может занять несколько страниц. Четвертое поле, в котором указывается
время работы процесса, может представлять интерес в том случае, если в
нем присутствуют неожиданно высокие числа. Большинство команд Linux,
даже очень сложных, выполняется быстро.
Выше приведена команда
ps в простейшем виде. Если информации, которая
выводится описанным способом, окажется недостаточно, воспользуйтесь командой
ps в длинном формате:
gilbert: ~# ps -l
или в иерархическом формате:
gilbert: ~# ps -f
В последнем варианте команда
сообщает, какие процессы являются родительскими, а какие ≈ дочерними:
gilbert:~# ps -f
PID TTY STAT TIME COMMAND
49 v02 S 0 00 /sbin/getty tty2 38400
console
50 v03 8 0 00 /sbin/getty tty3 38400
console
51 v04 S 0 00 /sbin/getty tty4 38400
console
52 v05 S 0 00 /sbin/getty tty5 38400
console
53 v06 S 0 00 /sbin/getty tty6 38400
console
48 v01 S 0 00 -bash
73 v01 S 0 01 \_ bash
257 v01 S 0 00 \_ sh /usr/X11/bin/startx
258 v01 S 0 00 \_ xinit /usr/X11R6/lib/X11/xinit/xinitrc
-
260 v01 S 0 00 \_ twm
Для нас основной интерес представляет
первый столбец, в котором перечислены идентификаторы работающих процессов.
При запуске нового процесса ядро присваивает ему определенный идентификатор
(процесс init имеет идентификатор 1).
Идентификатор играет важную
роль, поскольку он используется для различных манипуляций с процессом.
Например, иногда приходится уничтожать процессы из-за того, что они расходуют
слишком много драгоценных ресурсов системы или работают не так, как предполагалось.
Если процесс работает в обычном режиме, остановите его клавишей
Delete или Break
(если эти клавиши не работают, попробуйте Ctrl+C
или Ctrl+D). Если процесс работает
в фоновом режиме или был запущен другим пользователем с другого терминала,
для его уничтожения применяется команда kill:
gilbert:~# kill PID
где PID
≈ идентификатор процесса (Process IDentifier),
полученный командой ps. Процесс получает сигнал, который приказывает ему
прекратить существование. Большинство процессов не знает, что делать с
этим сигналом, поэтому с горя они совершают самоубийство. Не все процессы
реагируют на обычную команду kill; например, оболочки игнорируют команду
kill без параметров. Чтобы уничтожить оболочку
или другой особенно упрямый процесс, введите команду kill
с параметром -9:
gilbert:~# kill -9 PID
Тем самым вы отправляете процессу
сигнал безусловного уничтожения. Для уничтожения нескольких процессов можно
воспользоваться следующей командой:
gilbert: ~# kill 0
Команда уничтожает все процессы
в текущей группе, к которой относятся все процессы, созданные общим предком
(обычно оболочкой, выполняющей регистрацию пользователя).
Дополнительно
о фоновом и обычном режимах
В операционной системе
Linux выполняется большое количество процессов,
им должны назначаться приоритеты. Вычислительные ресурсы все же не бесконечны,
а некоторые задачи просто важнее других ≈ каждому хочется решать свои задачи
на личном Cray, но приходится обходиться
обычными многопользовательскими системами. Если ваша задача работает, не
запрашивая дополнительных данных, запустите ее в фоновом режиме. Это означает,
что процесс временно исчезает из поля зрения и возникает снова лишь после
завершения команды. Пока программа работает в фоновом режиме, можно заниматься
другими делами и запускать другие задачи.
Как говорилось выше, для
запуска процесса в фоновом режиме достаточно закончить командную строку
символом ⌠амперсанд■ (&):
$ команда параметры &
Программы, интенсивно расходующие
ресурсы процессора (например, sort), следует
запускать в фоновом режиме. После того как команда sort
приступит к обработке больших файлов, вам не придется взаимодействовать
с ней; ваше дело ≈ запустить команду и не мешать. Команда sort
не требует дополнительных данных и в процессе сортировки не выводит данные
на экран. То же самое относится и к компиляции программ ≈ программист в
ней не участвует, поскольку он уже успел достаточно навредить при написании
исходного текста.
Возникает искушение ≈ потребовать,
чтобы все программы запускались только в фоновом режиме. Однако делать
этого не стоит. Фоновый режим ограничивается узким кругом команд. Например,
любая команда, которая требует постоянного взаимодействия с пользователем
(например, текстовый редактор или программа электронной почты), не должна
запускаться в фоновом режиме.
Область
подкачки и быстродействие
При установке Linux вам
предлагалось создать область подкачки, которая расширяет оперативную память
за счет места на жестком диске. Понятие ⌠подкачки■ хорошо знакомо каждому,
кто работал с UNIX на любой аппаратной
платформе, ≈ особенно когда при переключении между приложениями начинается
интенсивный обмен с жестким диском.
Linux использует механизм
замещения
страниц (paging) для пересылки
содержимого памяти (в данном случае страниц размером 4096 байт) между оперативной
памятью и жестким диском. Если учесть, насколько интенсивно используется
память в любой PC-версии UNIX (чему
в немалой степени способствует Х Window System),
просто удивительно, каким образом обеспечивается такое быстродействие
Linux. Конечно, дело не обходится без некоторых
трюков. Например, если страница памяти была получена из файла, доступного
только для чтения, эта страница просто отбрасывается и читается заново
при следующем обращении. Кроме того, Linux позволяет приложениям совместно
использовать содержимое страниц; если одновременно загрузить два разных
экземпляра приложения, оба экземпляра в действительности осуществляют чтение
из одной страницы памяти.
В процессе установки Linux
вам предоставляется возможность создать отдельный раздел для области подкачки.
Перед тем как обсуждать этот вариант, мы рассмотрим управление памятью
в Linux ≈ это поможет вам решить, действительно ли для подкачки нужно выделить
больше места.
Свободная
память
Команда Linux free
выводит информацию о свободной и занятой памяти в вашей системе:
gilbert: ~$ free
total used free share buffers cached
Mem 63252 8124 55128 6484 980 3852
-/+ buffers: 3292 59960
Swap: 0 0 0
Общий объем памяти изменяется
в блоках; объем блока равен 1024 байтам. Сравните с рис. 9.1, где команда
free была выполнена при работе Х Window.
Рис. 9.1.
Выполнение команды free в Х
После загрузки Х Window
числа несколько изменяются ≈ внезапно свободная память сокращается до 6
мегабайт, тогда как свыше 8 мегабайт занято, а более 6 мегабайт совместно
используется процессами.
Числа в столбце buffers
относятся к памяти, зарезервированной системой для стандартных дисковых
операций. Вместо того чтобы за каждой мелочью обращаться к диску, Linux
резервирует для этой цели часть памяти (при нехватке памяти эта область
освобождается для других целей).
В данном примере при установке
Linux область подкачки не создавалась, отсюда и нули в строке Swap.
Использование
области подкачки
Если на вашем PC
установлено 16 Мбайт памяти, как в предыдущем примере, вероятно, область
подкачки вам не понадобится ≈ разве что при интенсивном расходовании памяти
вашими задачами (например, при программировании). Вероятно, в таких случаях
выделить место для подкачки все же стоит. Но если вы не создали специальный
раздел при установке Linux, вам не
повезло ≈ придется использовать fdisk,
изменять структуру разделов на жестком диске и переустанавливать Linux.
Если владелец компьютера
из предыдущего примера захочет выделить место для подкачки, но обойтись
без переустановки Linux, остается единственный выход ≈ создать файл подкачки.
Создание файла подкачки в действительности имеет много общего с созданием
раздела подкачки (см. главу 2), хотя выполняется чуть сложнее.
Прежде всего для файла подкачки
необходимо зарезервировать место на жестком диске, а для этого следует
воспользоваться командой dd. Но предварительно
вы должны определить, сколько места вы хотите зарезервировать и какое имя
будет присвоено файлу подкачки (не ломайте голову и назовите его
swap). Так, следующая команда создает 10-мегабайтный
файл подкачки:
gilbert:~# dd if=/dev/zero of=/swap
bs=1024 count=10240
Команда dd
записывает данные из специального файла устройства /dev/zero
(не беспокойтесь ≈ в данном случае вам ничего не нужно знать об этом файле,
кроме факта его существования) в новый файл с именем /swap.
Мы выбрали размер блока равным 1024 и всего выделили 10 240 байт, что составляет
10 мегабайт памяти
Файл подкачки создан. Теперь
необходимо отформатировать его командой mkswap
(вспомните ≈ эта команда упоминалась при описании установки Linux). В данном
случае файл /swap форматируется для
объема 10 240 байт:
gilbert:~# mkswap -с /swap 10240
Команда sync
обеспечивает синхронизацию нового файла подкачки с остальной частью системы:
gilbert:~# sync
Но это еще не все! Остается
сообщить Linux о наличии файла подкачки. Для этого следует ввести команду
swapon и указать имя файла подкачки:
gilbert:~# swapon /swap
После выполнения всех описанных
действий можно снова выполнить команду free
(рис. 9.2) и убедиться в том, что область подкачки стала доступной.
Чтобы созданная область подкачки
постоянно включалась в Linux при загрузке системы, необходимо добавить
в файл /etc/fstab новую строку. Этот
файл управляет подключением файловых систем в процессе загрузки Linux.
Процесс выглядит весьма запутанно, но в действительности происходит следующее.
Файл /etc/rc.d/rc.S содержит следующую
строку:
swapon -a
Рис. 9.2.Команда
free после создания области подкачки
Это означает, что в файле /etc/fstabпроизводится
поиск областей подкачки. Если ни одна область не будет найдена, загрузка
продолжается как обычно. Если в файле /etc/fstab обнаруживается файл или
раздел подкачки, он автоматически подключается при загрузке Linux.
Чтобы файл или раздел подключался при каждой загрузке Linux, в файл /etc/fstab
должна быть включена строка следующего вида:
устройство каталог тип параметры
/swap none swap sw
Для отключения раздела подкачки
используется команда swapoff:
gilbert:~# swapoff /swap
Файл подкачки следует удалять
только после предварительного выполнения команды swapoff.
Если вы не собираетесь снова
использовать файл подкачки, его можно удалить из системы командой rm. Кроме
того, вы должны отредактировать файл /etc/ fstab
и удалить из него ссылку на файл подкачки. Если Linux ищет файл подкачки
и не находит его, вы получите несколько сообщений об ошибках и рискуете
нарушить целостность памяти.
Подключение
устройств
В терминологии UNIX
⌠подключение■ (mount) устройства означает,
что файловая система узнает о наличии устройства, которым она может пользоваться.
Таким устройством может быть жесткий диск, дисковод CD-ROM
или что-нибудь еще. При запуске Linux система автоматически подключает
все устройства вашего компьютера, ссылки на эти устройства хранятся в файле
/etc/fstab. Для подключения различных компонентов PC
сценарий запуска Linux (обычно находящийся в каталоге /etc/rc.d)
берет сведения из файла /etc/fstab.
Теоретически в системе Linux
ничего подключать не нужно, если все оборудование было правильно установлено.
Возможно, при внесении изменений в систему вам потребуется подключить новый
жесткий диск или дисковод CD-ROM или
же подключить стример лишь в тот момент, когда он вам понадобился.
Подключение устройства ≈
задача несложная. Для этого используется команда mount,
которой в качестве параметров передается как имя подключаемого устройства,
так и каталог файловой системы, в котором это устройство должно находиться
(такой каталог должен существовать заранее, поэтому его необходимо создать
до выполнения команды mount). В обобщенном
виде команда mount выглядит примерно
так (устройство ≈ имя устройства, а каталог ≈ каталог, к которому оно подключается):
gilbert:~# mount устройство каталог
В Linux
для идентификации устройств используются последовательности имен (/dev/scd0
для первого SCSI-дисковода CD-ROM в
системе, /dev/scdl ≈ для второго и
т. д.). Каталог просто определяет каталог файловой системы, через который
вы сможете обращаться к файлам данного устройства. Например, для подключения
SCSI-дисковода CD-ROM к каталогу
/cdrom используется следующая командная строка:
gilbert:~# mount /dev/scd0 /cdrom
-t iso9660
Команда mount
обычно выполняет надежную автоматическую проверку типа файловой системы
(по крайней мере, для CD-ROM), поэтому
тип в командной строке указывать не обязательно.
Дисководы CD-ROM
с интерфейсом IDE обычно соответствуют
устройствам /dev/hdb, /dev/hdc или
/dev/hdd. Подключение дисковода CD-ROM
с интерфейсом IDE почти не отличается
от подключения SCSI-дисковода:
gilbert:~# mount /dev/hdb /cdrom
-t iso9660
Для отключения ранее подключенных
файловых систем применяется команда umount:
gilbert: ~# umount /cdrom
Сообщение
дня
Администраторы, работавшие
на других UNIX-системах, часто отправляют ежедневное сообщение всем пользователям
своей системы. Такая возможность предусмотрена и в Linux.
Когда пользователь регистрируется
в системе, на экране автоматически отображается содержимое файла
/etc/motd. Следовательно, чтобы отправить
сообщение дня, необходимо создать файл /etc/motd. Для этого можно воспользоваться
текстовым редактором (например, elvis
или emacs) и сохранить текст в файле
с именем /etc/motd.
Один из системных сценариев
запуска (/etc/rc.d/rc.S) создает новые
сообщения /etc/motd и /etc/issue на
основании имени работающего ядра. Если вы хотите использовать собственные
файлы сообщений, закомментируйте в этом сценарии строки, создающие файлы
/etc/motd и /etc/issue, или ваши сообщения
будут стерты при перезагрузке.
Итоги
В этой главе рассматриваются
основные задачи системного администрирования в Linux. Среди них немало
повседневных операций ≈ таких, как добавление и удаление пользователей,
управление группами, создание загрузочных гибких дисков, планирование запуска
команд и т. д. Однако системное администрирование UNIX
отнюдь не ограничивается описанными задачами, и если вы серьезно относитесь
к этой теме, мы рекомендуем приобрести хорошую книгу по системному администрированию
UNIX и применить описанные в ней общие концепции
к Linux.