Добавление диска к системе sysinstall → confugure … Получение информации о слайсах [gX:~] # fdisk ******* Working on device /dev/ad0 ******* parameters extracted from incore disklabel are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Figures below won't work with BIOS for partitions not in cyl 1 parameters to be used for BIOS calculations are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 10474317 (5114 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 1023/ head 3/ sector 63 The data for partition 2 is: <UNUSED> The data for partition 3 is: <UNUSED> The data for partition 4 is: <UNUSED> Получение информации о разделах внутри слайса [gX:~] # bsdlabel ad0s1 # /dev/ad0s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 1024000 0 4.2BSD 2048 16384 64008 b: 1024000 1024000 4.2BSD 2048 16384 64008 c: 10474317 0 unused 0 0 # "raw" part, don't edit d: 6291456 2048000 4.2BSD 2048 16384 28552 e: 2134861 8339456 4.2BSD 2048 16384 28552 76 Создание файла конфигурации описывающий слайс [gX:~] # cat > addsliceconf g c116301 h16 s63 p 2 165 10474381 40000000 a 1 Тестирование (-t) файла конфигурации [gX:~] # fdisk t f addsliceconf /dev/ad0 ******* Working on device /dev/ad0 ******* fdisk: WARNING line 1: number of cylinders (116301) may be outofrange (must be within 11024 for normal BIOS operation, unless the entire disk is dedicated to FreeBSD) fdisk: WARNING: adjusting start offset of partition 2 from 10474381 to 10474443, to fall on a head boundary fdisk: WARNING: adjusting size of partition 2 from 40000000 to 39999141 to end on a cylinder boundary parameters extracted from incore disklabel are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Figures below won't work with BIOS for partitions not in cyl 1 parameters to be used for BIOS calculations are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Information from DOS bootblock is: 1: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 10474317 (5114 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 1023/ head 3/ sector 63 2: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 10474443, size 39999141 (19530 Meg), flag 0 beg: cyl 151/ head 5/ sector 1; end: cyl 920/ head 15/ sector 63 3: <UNUSED> 4: <UNUSED> Внесение изменений [gX:~] # fdisk f addsliceconf /dev/ad0 ******* Working on device /dev/ad0 ******* fdisk: WARNING line 1: number of cylinders (116301) may be outofrange (must be within 11024 for normal BIOS operation, unless the entire disk is dedicated to FreeBSD) 77 fdisk: WARNING: adjusting start offset of partition 2 from 10474381 to 10474443, to fall on a head boundary fdisk: WARNING: adjusting size of partition 2 from 40000000 to 39999141 to end on a cylinder boundary Проверка таблицы слайсов [gX:~] # ls /dev/ad0s2 /dev/ad0s2 [gX:~] # fdisk /dev/ad0 ******* Working on device /dev/ad0 ******* parameters extracted from incore disklabel are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Figures below won't work with BIOS for partitions not in cyl 1 parameters to be used for BIOS calculations are: cylinders=116301 heads=16 sectors/track=63 (1008 blks/cyl) Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 10474317 (5114 Meg), flag 80 (active) beg: cyl 0/ head 1/ sector 1; end: cyl 1023/ head 3/ sector 63 The data for partition 2 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 10474443, size 39999141 (19530 Meg), flag 0 beg: cyl 151/ head 5/ sector 1; end: cyl 920/ head 15/ sector 63 The data for partition 3 is: <UNUSED> The data for partition 4 is: <UNUSED> Создание одного раздела (-w - по умолчанию) внутри слайса [gX:~] # bsdlabel ad0s2 bsdlabel: /dev/ad0s2: no valid label found [gX:~] # bsdlabel w ad0s2 [gX:~] # bsdlabel ad0s2 # /dev/ad0s2: 8 partitions: 78 # size offset fstype [fsize bsize bps/cpg] a: 39999125 16 unused 0 0 c: 39999141 0 unused 0 0 # "raw" part, don't edit Создание файловой системы в разделе [gX:~] # newfs b 8192 f 1024 O 2 U ad0s2a /dev/ad0s2 : 19530.8MB (39999140 sectors) а block size 8192, fragment size 1024 using 433 cylinder groups of 45.16MB, 5781 blks, 11584 inodes. with soft updates superblock backups (for fsck b #) at: 144, 92640, 185136, 277632, 370128, 462624, 555120, 647616, 740112, 832608, 925104, 1017600, 1110096, 1202592, 1295088, 1387584, 1480080, 1572576, 1665072, 1757568, 1850064, 1942560, 2035056, 2127552, 2220048, 2312544, ... Монтирование нового раздела [gX:~] # mkdir /data [gX:~] # mount /dev/ad0s2a /data [gX:~] # cat >> /etc/fstab /dev/ad0s2a /data ufs rw 1 1 79 Резервное копирование и восстановление Варианты резервного копирования 1. файлы данных программ (каталог /var) 2. файлы конфигураций (каталоги /etc /usr/local/etc /var/named/etc) tar c f etc/ usr/local/etc/ var/named/etc/ | ssh uX@g50 \ “cat > gX.conf.tar” 1. файлы всей операционной системы (файл /etc/fstab) План резервного копирования всей системы part mount util file size a / dump root.dmp 138Mb d /var/ dump var.dmp 34Mb e /usr/ tar usr.tgz 230Mb (без /usr/ports) Создание резервной копии (backup) [hostX:~] # rsh l uX gZ "touch root.dmp" [hostX:~] # dump 0 aLf uX@gZ:root.dmp / DUMP: Connection to gZ.class established. ... DUMP: DUMP IS DONE [hostX:~] # rsh l uX gZ "touch var.dmp" [hostX:~] # dump 0 aLf uX@gZ:var.dmp /var DUMP: Connection to gZ.class established. ... DUMP: DUMP IS DONE [hostX:~] # cd /usr [hostX:/usr] # tar –czvf exclude ports/ . | rsh l uX gZ "cat > usr.tgz" Восстановление (restore) Восстановление отдельных файлов На backup сервере: [g50:~u1] # restore xf root.dmp /etc/fstab You have not read any tapes yet. If you are extracting just a few files, start with the last volume and work towards the first; restore can quickly skip tapes that 80 have no further files to extract. Otherwise, begin with volume 1. Specify next volume #: 1 set owner/mode for '.'? [yn] y [g50:~u1] # cat etc/fstab или [g50:~u1] # restore if root.dmp restore > add etc restore > extract You have not read any tapes yet. If you are extracting just a few files, start with the last volume and work towards the first; restore can quickly skip tapes that have no further files to extract. Otherwise, begin with volume 1. Specify next volume #: 1 set owner/mode for '.'? [yn] y restore > quit [g50:~u1] # ls etc/ Восстановление всей системы Загружаем систему с livecd При использовании FreeBSD livefs диска выбираем пункты меню: "Fixit" > CDROM/DVD > AltF4 При использовании frenzy livecd в процессе загрузки указываем опцию nohdd Настраиваем и тестируем сеть Fixit# ifconfig rl0 inet 10.10.106.X/24 Fixit# ping 10.10.106.Z ... Добавляем упоминание сервиса rsh в файл /etc/services Fixit# cat >> /etc/services shell 514/tcp <Ctrl>D Создаем файловую систему на новом диске Используем sysinstall вместо утилит fdisk, bootmgr, bsdlabel и newfs Fixit# sysinstall Configure Fdisk C Create Slise S Set Bootable 81 W Write changes BootMgr Quit Exit Exit Install Fixit# /stand/sysinstall Configure Label C Create 500M FS /mnt/a (will be "/") S Toggle Softupdates C Create 500M FS /mnt/b C Create 3G FS /mnt/d (will be "/usr") C Create FS /mnt/e (will be "/var") W Write Q Finish Exit Exit Install Fixit# mount /dev/md0 on / (ufs, local) devfs on /dev (devfs, local) /dev/acd0 on /dist (cd9660, local, readonly) /dev/ad0s2d on /mnt/a (ufs, local) /dev/ad0s2e on /mnt/b (ufs, local, softupdates) /dev/ad0s2f on /mnt/d (ufs, local, softupdates) /dev/ad0s2g on /mnt/e (ufs, local, softupdates) Восстанавливаем файлы / раздел Fixit# cd /mnt/a Fixit# restore rf
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
.Z:root.dmp При необходимости можно откорректировать востановленные файлы конфигурации Fixit# ee /mnt/a/etc/rc.conf Fixit# ee /mnt/a/etc/fstab 82 /var раздел Fixit# cd ../e Fixit# restore rf
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
.Z:var.dmp /usr раздел Fixit# cd ../d Fixit# rsh l uX 10.10.106.Z "cat usr.tgz" | tar xvf – Исправляем имена разделов Fixit# umount /mnt/a Fixit# umount /mnt/b Fixit# umount /mnt/d Fixit# umount /mnt/e Fixit# bsdlabel ad0s2 # /dev/ad0s2: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 10474317 0 unused 0 0 # "raw" part, don't edit d: 1024000 0 4.2BSD 2048 16384 64008 e: 1024000 1024000 4.2BSD 2048 16384 64008 f: 6291456 2048000 4.2BSD 2048 16384 28552 g: 2X4861 8339456 4.2BSD 2048 16384 28552 Fixit# EDITOR=ee Редактируем имена разделов Fixit# bsdlabel e ad0s2 # /dev/ad0s2: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 1024000 0 4.2BSD 2048 16384 64008 b: 1024000 1024000 4.2BSD 2048 16384 64008 c: 10474317 0 unused 0 0 # "raw" part, don't edit d: 6291456 2048000 4.2BSD 2048 16384 28552 e: 2X4861 8339456 4.2BSD 2048 16384 28552 Восстановливаем загрузчики boot0 и boot2 Fixit# sysinstall Configure Fdisk Set bootable Write Boot Manager Exit Exit Install 83 Reboot in new system: Fixit# exit 84 Локализация консоли [hostX:~] # sysinstall (клавиатура, шрифты, терминал) [hostX:~] # cat /etc/rc.conf ... font8x16="cp8668x16" scrnmap="koi8r2cp866" keymap="ru.koi8r" [hostX:~] # /etc/rc.d/syscons start [hostX:~] # rcsdiff /etc/ttys 35c35 < ttyv0 "/usr/libexec/getty Pc" cons25 on secure > ttyv0 "/usr/libexec/getty Pc" cons25r on secure [hostX:~] # kill 1 1 [hostX:~] # date [hostX:~] # setenv LANG ru_RU.KOI8R [hostX:~] # date [hostX:~] # pw usermod root L russian 85 Редактор vi Редактор vi (visual editor) является первым полноэкранным (визуальным) редактором, получившим широкое распространение среди самых разнообразных аппаратных платформ. В настоящее время он всегда присутствует в любой UNIX-системе общего назначения (general purpose). Благодаря крайне низким требованиям к ресурсам и неприхотливости в отношении устройств ввода текста, редактор vi позволяет пользователю редактировать файлы даже, например, с сотового телефона или коммуникатора. Этот редактор использует три различных режима: • основной командный режим • расширенный командный режим • режим редактирования Ниже приведены основные команды редактора в различных режимах: Переключение режимов ESC - переход в основной командный режим ESC: - переход в расширенный командный режим Команды основного командного режима Навигация по тексту h - влево l - вправо k - вверх j - вниз <Shift>^ - на начало строки <Shift>$ - на конец строки <Ctrl>B - на страницу вверх <Ctrl>F - на страницу вниз [[ - на начало процедуры (текста) ]] - на конец процедуры (текста) <Ctrl>G - вывести отчет о редактируемом тексте Редактирование текста i - ввод текста с текущей позиции o - ввод текста с новой строки J - склеить строки x - удалить текст (DEL) X - удалить текст слева (BACKSPACE) yy - копировать строку в буфер dd - вырезать строку в буфер 86 p - вставить строку из буфера u - отменить последнее действие Поиск текста /регулярное_выражение - поиск по тексту вниз / - повтор поиска вниз ?регулярное_выражение - поиск по тексту вверх ? - повтор поиска вверх Команды расширенного режима (завершаются нажатием на <Enter>) w - запись файла q - выход из редактора w! - запись файла с без установленного бита записи q! - выход из редактора без сохранения число - переход на указанную строку текста set nu - включить режим отображения номеров строк set nonu - выключить режим отображения номеров строк set smd - отображать в статусной строке режим редактирования set nosmd - не отображать в статусной строке режим редактирования Примеры работы с текстом в расширенном режиме номер_строки - перейти на указанную строку 1,.d - удалить строки с первой до текущей g/шаблон/d - удалить строки, содержащие шаблон во всем тексте 1,20g/шаблон/d - удалить строки, содержащие шаблон c 1 по 20 строку 20,$s/шаблон/замена/ - произвести замены в тексте с 20 строки до конца 87 Редактор ee Самым простым в изучении и использовании, по-видимому, можно назвать ee, что расшифровывается как ''easy editor'', т.е. ''простой редактор''. Чтобы начать редактировать какой-либо файл, наберите в командной строке ee filename, где filename – имя редактируемого файла. Например, для редактирования файла /etc/rc.conf, наберите ee /etc/rc.conf. В верхней части экрана вы увидите список основных команд редактора. Символ каретки (^) означает клавишу Ctrl, таким образом, ^e означает комбинацию клавиш Ctrl+e. Чтобы выйти из редактора, нажмите клавишу Esc, затем Enter. Если остались какие-либо не сохраненные данные, вам потребуется подтвердить выход, сохранив результат работы или оставив файл без изменения. Управляющие клавиши для редактора ee: ^a – в начало строки ^b – влево на один символ ^c – выполнить команду (на экране сверху появится список команд) ^d – удалить символ ^e – в конец строки ^f – вправо на один символ ^g – на одну страницу назад ^h – удалить символ слева (аналогично клавише Backspace) ^[ или ESC – вызов дополнительного меню ^i – табуляция ^j – отменить удаление символа ^k – удалить строку ^l – восстановить строку ^m – добавить новую строку (аналогично клавише Enter) ^n – перейти на 1 строку ниже ^o – вставить символ, введя его ASCII код (десятичный) ^p – перейти на 1 строку выше ^r – восстановить слово ^t – в начало файла ^u – в конец файла ^v – перейти на 1 страницу вниз ^w – удалить слово ^x – повторить поиск (шаблон для поиска задается с помощью ^y) 88 ^y – поиск по шаблону ^z – перейти к следующему слову ESCEnter – выход из ee 89 Редактор nano Редактор nano разработан для эмуляции функциональности и простоты использования оригинального редактора UW Pico. Редактор разбит на 4 основные части: верхняя строка содержит версию программы, текущее имя файла, который редактируется, и были ли внесены изменения в текущий файл. Вторая часть - это главное окно редактирования, в котором отображен редактируемый файл. Строка состояния - 3 строка снизу - показывает разные важные сообщения. Две строки внизу показывают наиболее часто используемые комбинации клавиш. Система обозначений комбинаций клавиш следующая: Комбинации с Control обозначены символом (^) и вводятся при помощи нажатой кнопки (Ctrl) или двойном нажатии Escape (Esc); Комбинации с Esc обозначены символом Meta (M) и могут быть введены при помощи кнопкок Esc, Alt или Meta, в зависимости от используемой клавиатуры. Также, нажатие Esc дважды и дальнейший ввод трёхзначного числа от 000 до 255 введёт соответствующий символ. Следущие комбинации доступны в главном окне редактирования. Альтернативные комбинации показаны в скобках: ^G (F1) Отобразить текст справки ^X (F2) Закрыть текущий буфер / Выйти из nano ^O (F3) Записать текущий файл на диск ^J (F4) Выровнять текущий абзац ^R (F5) Вставить другой файл в текущий ^W (F6) Использовать регулярные выражения ^Y (F7) Переместиться на предыдущий экран ^V (F8) Переместиться на следущий экран ^K (F9) Вырезать текущую строку и сохранить ее в буфере вырезки ^U (F10) Вставить содержимое буфера вырезки в текущую строку ^C (F11) Показать положение курсора ^T (F12) Выполнить проверку орфографии, если доступно ^_ (F13) (MG) Перейти на указанный номер строки и ряд ^\ (F14) (MR) Заменить строку или регулярное выражение ^^ (F15) (MA) Отметить текст в текущей позиции курсора (F16) (MW) Повторить последний поиск M^ (M6) Копировать текущую строку и сохранить ее в буфере вырезки M} Увеличить отступ строки M{ Уменьшить отступ строки ^F Вперед на один символ ^B Назад на один символ ^Пробел Вперед на одно слово MПробел Назад на одно слово 90 ^P Перейти на предыдущую строку ^N Перейти на следующую строку ^A Переместиться на начало текущей строки ^E Переместиться в конец текущей строки M( (M9) Переместиться на начало текущего абзаца M) (M0) Переместиться в конец текущего абзаца M\ (M|) Переместиться на первую строку файла M/ (M?) Переместиться на последнюю строку файла M] Переместиться на соответствующую скобку M( M_) Прокрутить одну строку вверх не перемещая курсор M+ (M=) Прокрутить одну строку вниз не перемещая курсор M< (M,) Переключить на предыдущий буфер M> (M.) Переключить на следующий буфер MV Вставить следующую комбинацию клавиш как есть ^I Вставить табуляцию в позиции курсора ^M Вставить строку в позиции курсора ^D Удалить символ под курсором ^H Удалить символ слева от курсора MT Вырезать с текущей позиции до конца файла MJ Выровнять весь файл MD Подсчитать количество слов, строк и символов ^L Перерисовать текущий экран MX Режим справки разрешить/запретить MC Постоянное отображение положения разрешить/запретить MO Использование дополнительной строки для редактирования разрешить/запретить MS Плавная прокрутка разрешить/запретить MP Отображение пробелов разрешить/запретить MY Подсветка синтаксиса разрешить/запретить MH Умная кнопка home разрешить/запретить MI Авто отступы разрешить/запретить MK Вырезать до конца разрешить/запретить ML Автоматическая разбивка строк разрешить/запретить MQ Преобразование ввода табуляций в пробелы разрешить/запретить MB Делать резервные копии разрешить/запретить MF Несколько файловых буферов разрешить/запретить MM Поддержка мыши разрешить/запретить MN Без преобразования из DOS/Mac формата разрешить/запретить MZ Приостановка разрешить/запретить 91 Система контроля версий rcs RCS (Revision Control System) является одной из самых первых (разработана в 1985 году) систем управления версиями: для каждого файла, зарегистрированного в системе, она хранит полную историю изменений, причём для текстовых файлов используется эффективный алгоритм дельта-компрессии, когда хранится только последняя версия и все межверсионные изменения. Система позволяет также хранить версии бинарных файлов, но без использования этого механизма, то есть каждая версия бинарного файла хранится полностью. Система RCS не имеет средств для коллективной работы над набором файлов – эти средства появились в системе-наследнице – CVS, использующей форматы и алгоритмы RCS для учёта версий, но имеющей также интерфейсы для коллективной работы. Отсутствие коллективной работы на практике выглядит так, что только тот пользователь, который произвел действие «Lock» над файлом или файлами, может вносить изменения. Другие пользователи запросить эти же файлы на редактирование не могут. Подробнее о RCS можно прочитать на следующих справочных страницах: rcsintro(1), co(1), ci(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5) Примеры: $ ci –l filename $ rlog $ co –p1.1 filename $ co –l1.1 filename $ rcsdiff –r1.1 filename $ rcsdiff –r1.1 –r1.2 filename 92 Потоковый редактор sed sed (stream editor) — потоковый текстовый редактор (а также язык программирования), применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных. sed получает входной поток (обычно файл) построчно, редактирует каждую строку согласно правилам, определённым в sed-скрипте с использованием простого языка sed, и затем выводит результат в выходной поток. sed часто называют неинтерактивным текстовым редактором. Он отличается от обычных текстовых редакторов «инвертированностью» по отношению к тексту и набору команд редактирования. Обычные текстовые редакторы вначале загружают весь текст документа, а затем применяют к нему команды по одной, в то время как sed вначале загружает в себя набор команд, а затем применяет весь набор команд к каждой строчке текста. Так как одновременно в памяти находится только одна строка, sed может обработать произвольно большие текстовые файлы. Шаблон вызова sed команды_редактирования [имя_файла] $ sed '' /etc/passwd $ sed n '' /etc/passwd Команда редактирования -- p -- печать текста $ sed n '1p' /etc/passwd # $FreeBSD: src/etc/master.passwd,v 1.39 2004/08/01 21:33:47 markm Exp $ $ sed n '20,$p' /etc/passwd pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin Команда редактирования -- a -- вставка после и -- i -- перед строкой $ who | sed '/root/a\ SUPER USER ' root ttyv1 Oct 17 16:15 SUPER USER user ttyp0 Oct 17 17:40 (195.19.32.14) Команда редактирования -- c -- замена строк $ cat /etc/defaults/rc.conf | sed '/^#/c\ 93 COMMENT ' Команда редактирования -- d -- удаление текста $ sed '2,$d' /etc/passwd # $FreeBSD: src/etc/master.passwd,v 1.39 2004/08/01 21:33:47 markm Exp $ $ sed e '/^$/d' e '/^#/d' /etc/defaults/rc.conf Команда редактирования -- s -- замена элементов текста $ sed 's/root/SUPERUSER/' /etc/passwd # $FreeBSD: src/etc/master.passwd,v 1.39 2004/08/01 21:33:47 markm Exp $ # SUPERUSER:*:0:0:Charlie &:/root:/bin/csh toor:*:0:0:Bourneagain Superuser:/SUPERUSER: ... $ sed 's/root/SUPERUSER/g' /etc/passwd # $FreeBSD: src/etc/master.passwd,v 1.39 2004/08/01 21:33:47 markm Exp $ # SUPERUSER:*:0:0:Charlie &:/SUPERUSER:/bin/csh toor:*:0:0:Bourneagain Superuser:/SUPERUSER: $ sed E '/(^$)|(^#)/d' /etc/defaults/rc.conf $ sed E 's/(^u[0123456789]+)/\1user/' /etc/passwd или $ sed E 's/(^u[[:digit:]]+)/\1user/' /etc/passwd Аргумент -- i – непосредственное редактирование файла $ cp /etc/passwd ~ $ cd $ sed –i .bak E 's/(r.*t)/\1SUPERUSER/g' passwd 94 Генератор отчетов awk AWK — интерпретируемый скриптовый C-подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам. AWK рассматривает входной поток как список записей. Каждая запись делится на поля. На основе этой информации выполняется некоторый определённый программистом алгоритм обработки. По умолчанию разделителем записей является символ новой строки (то есть записи - это то же самое, что строки), разделителем полей — символ пробела или табуляции, или последовательность таких символов. Символы-разделители можно явно определить в программе. Символ-разделитель полей можно определить и в командной строке. AWK-программа состоит из операторов (правил), имеющих вид: шаблон {действие} шаблон {действие} . . . Каждая запись поочерёдно сравнивается со всеми шаблонами, и каждый раз когда она соответствует шаблону, выполняется указанное действие. Если шаблон не указан, то действие выполняется для любой записи. Если не указано действие, то запись выводится. В AWK также существует 2 предопределённых шаблона BEGIN и END. BEGIN выполняется до начала обработки входного потока. END — после обработки последней записи входного потока. Действие может состоять из последовательности операторов, разделяемой точкой с запятой, переводом строки или закрывающей скобкой. Печать исходных данных без изменений $ awk '{print}' /etc/passwd $ awk '{print $0}' /etc/passwd Фильтрация данных $ awk '/root/ {print $0}' /etc/passwd root:*:0:0:Charlie &:/root:/bin/csh toor:*:0:0:Bourneagain Superuser:/root: daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin Использование разделителя полей и отрицательного условия $ awk F: '!/nologin/ {print $1}' /etc/passwd # $FreeBSD # root toor 95 Использование заголовков и итогов в отчетах, использование переменных $ awk F: 'BEGIN {print "Users used csh"; count=0} /csh$/ {print $1; count++} END {print count " users"}' /etc/passwd Обработка файла почтового ящика пользователя с какой строки начинается и от кого письмо $ ee ex1.awk $ cat ex1.awk BEGIN {st=1} /^$/ {st=1} /^From/ {if (st==1) {print "String " NR; print $0; st=0} } !/^$/ {st=0} $ awk f ex1.awk /var/mail/uX String 1 From u0@server.class Tue Oct 18 10:05:44 2005 String 21 From u0@server.class Tue Oct 18 10:05:49 2005 Отчет по суммарному количеству товаров на складе $ vi wares.txt $ cat wares.txt table:34 car:24 apple:23 car:12 $ vi ex2.awk $ cat ex2.awk { M[$1]+=$2 } END { for (i in M) { print "sum " i "=" M[i] } } $ awk F: f ex2.awk wares.txt 96 sum apple=23 sum car=36 sum table=34 97 Инсталяция системы в конфигурации Desktop Установка X-сервера [hostX:~] # pkg_add r xorg Настройка X-сервера [hostX:~] # Xorg configure [hostX:~] # X config /root/xorg.conf.new [hostX:~] # cp /root/xorg.conf.new /etc/X11/xorg.conf Настройка разрешения экрана и глубины цветности [hostX:~] # cat /etc/X11/xorg.conf … Section " Monitor" … HorizSync 30.0 82.0 VertRefresh 75.0 75.0 … EndSection ... Section "Screen" Identifier "Screen0" Option "AllowEmptyInput" "false" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" # Modes "1280x1024" EndSubSection EndSection Включение поддержки колеса прокрутки "мыши" [hostX:/etc/X11] # ee xorg.conf [hostX:/etc/X11] # cat xorg.conf ... Section "InputDevice" Identifier "Mouse0" 98 Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection ... Запуск X-сервера [hostX:~] # X CtlAltBackspace [hostX:~] # cat .xinitrc /usr/local/bin/twm [hostX:~] # startx & [hostX:~] # grep xdm /etc/ttys ttyv8 "/usr/X11R6/bin/xdm nodaemon" xterm on secure [hostX:~] # cat .xsession /usr/local/bin/twm [hostX:~] # kill 1 1 99 Локализация системы Локализация консоли [hostX:~] # sysinstall (клавиатура, шрифты, терминал) [hostX:~] # cat /etc/rc.conf ... font8x16="cp8668x16" scrnmap="koi8r2cp866" keymap="ru.koi8r" [hostX:~] # /etc/rc.d/syscons start [hostX:~] # rcsdiff /etc/ttys 35c35 < ttyv0 "/usr/libexec/getty Pc" cons25 on secure > ttyv0 "/usr/libexec/getty Pc" cons25r on secure [hostX:~] # kill 1 1 [hostX:~] # date [hostX:~] # setenv LANG ru_RU.KOI8R [hostX:~] # date [hostX:~] # pw usermod root L russian Локализация X сервера Устанавливаем русскую локализацию пользователя [hostX:~] # pw usermod root L russian [hostX:~] # logout Включаем поддержку русских шрифтов Штатные шрифты [hostX:~] # cat xorg.conf ... Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" ModulePath "/usr/X11R6/lib/modules" 100 FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" EndSection ... TrueType шрифты [hostX:~] # fetch http://koi8.pp.ru/dist/msttcorefonts.tgz [hostX:~] # cd /usr/X11R6/lib/X11/fonts/ [hostX:lib/X11/fonts] # tar xvzf ~/msttcorefonts.tgz # cat /etc/X11/xorg.conf Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" ModulePath "/usr/X11R6/lib/modules" FontPath "/usr/X11R6/lib/X11/fonts/msttcorefonts/" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/CID/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" EndSection Включаем поддержку русской клавиатуры На лету: [hostX:~] # setxkbmap layout "us,ru" option "grp:alt_shift_toggle" Или в файле конфигурации: [hostX:~] # cat xorg.conf ... Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:alt_shift_toggle" EndSection ... 101 Управление оконными менеджерами Инсталяция оконного менеджера [gX:~] # pkg_add r xfce4 Управление оконными менеджерами в скрипте startx [gX:~] # cat .xinitrc /usr/local/bin/xfce4session Управление оконными менеджерами в менеджере дисплеев xdm [gX:~] # cat ~uX/.xsession /usr/local/bin/xfce4session Работа в сетях Windows Подключение к Microsoft терминал серверу [gX:~] # pkg_add /usr/ports/packages/All/rdesktop.tbz [gX:~] # rehash [gX:~] # rdesktop 10.10.106.20 Монтирование файловых ресурсов Microsoft root@shanti:~# mount t cifs //195.19.32.31/IPTVMedia /mnt/ o user=Administrator Password: root@shanti:~# ls /mnt/ Работа с Internet сервисами Сервис http [gX:~] # pkg_add /usr/ports/packages/All/opera.tbz 102 Сервисы электронной почты Сервисы сообщений P2P сервисы Работа с офисными документами Работа с текстом [gX:~] # pkg_add /usr/ports/packages/All/abiword.tbz Сервис проверки орфографии [gX:~] # pkg_add /usr/ports/packages/All/ruaspell0.60.2. tbz Работа с мультимедийной информацией Воспроизведение звука Определяем драйвер звуковой карты [gX:~] # kldload snd_driver [gX:~] # cat /dev/sndstat FreeBSD Audio Driver (newpcm) Installed devices: pcm0: <Intel ICH5 (82801EB)> at io 0xfc001000, 0xfc002000 irq 17 bufsz 16384 kld snd_ich (1p/1r/1v channels duplex default) Прописываем его в автозагрузку [gX:~] # cat /boot/loader.conf ... snd_ich_load="YES" ... 103 Проверка работоспособности звуковой карты [gX:~] # cat /usr/ports/addins/bird_1.au > /dev/audio0.0 Установка программы для воспроизведения аудиофайлов [gX:~] # pkg_add /usr/ports/packages/All/mpg123.tbz [gX:~] # rehash [gX:~] # mpg123 /usr/ports/addins/KnockinonHeavensDoor.mp3 Воспроизведение видео [gX:~] # pkg_add /usr/ports/packages/All/mplayer.tbz [gX:~] # rehash [gX:~] # mplayer fs zoom /usr/ports/addins/egik_v_tumane.avi 104 Система печати FreeBSD Использование локального принтера Рассматриваются принтеры HP С некоторыми lpt принтерами приходилось: # hw.intr_storm_threshold: 25000 # lptcontrol -s -d /dev/lpt0 Использование lpd [gX:~] # pkg_add /usr/ports/packages/All/ghostscriptgplnox11. tbz [gX:~] # cat /etc/printcap lp|local line printer:\ :sh:\ :lp=/dev/ulpt0:\ :sd=/var/spool/output/lpd:\ :if=/usr/share/examples/printing/ifhp:\ :lf=/var/log/lpderrs: [gX:~] # chmod +x /usr/share/examples/printing/ifhp [gX:~] # cat >> /etc/rc.conf lpd_enable="YES" [gX:~] # /etc/rc.d/lpd start Starting lpd. [gX:~] # lpr /etc/rc.conf [gX:~] # gunzip c /usr/share/man/man1/cat.1.gz | groff man Tps | lpr [gX:~] # zcat /usr/share/man/man1/cat.1.gz | groff man Tlj4 | lpr Печать из Unix на Unix принт-сервере Настройка сервера печати Фильтр печати предполагается на клиенте [gZ:~] # cat /etc/hosts.lpd ... gX ... 105 [gZ:~] # cat /etc/printcap lp|local line printer:\ :sh:\ :lp=/dev/ulpt0:\ :sd=/var/spool/output/lpd:\ :lf=/var/log/lpderrs: Настройка клиента [gX:~] # cat /etc/printcap lp|local line printer:\ :sh:\ :rm=gZ:\ :sd=/var/spool/output/lpd:\ :lf=/var/log/lpderrs:\ :if=/usr/share/examples/printing/ifhp: [gX:~] # chmod +x /usr/share/examples/printing/ifhp [gX:~] # cat /etc/rc.conf ... lpd_enable="YES" ... [gX:~] # /etc/rc.d/lpd start Starting lpd. [gX:~] # lpr /etc/rc.conf Печать из Windows на Unix принт-сервере Настройка сервера печати Добавляем к конфигурации сервера печати: [gX:~] # cat /usr/local/etc/smb.conf [global] ... printcap name = /etc/printcap printing = bsd ... [lp] path = /tmp printable = Yes print command = lpr r %s use client driver = Yes 106 Печать из Unix на Windows принт-сервере [gX:~] # pkg_info | grep 'cups\|samba\|ghost' cupsbase1.3.9_ 2 Common UNIX Printing System cupspstoraster8.15.4_ 2 Postscript interpreter for CUPS printing to nonPS printers cupssmbbackend1.0_ 2 A CUPS backend for printing to Windows servers ghostscript8nox118.62_ 5 Ghostscript 8.x PostScript interpreter gutenprintcups5.1.7_ 3 GutenPrint Printer Driver samba3.0.32_ 2,1 A free SMB and CIFS client and server for UNIX [gX:~] # cat /etc/rc.conf ... cupsd_enable="YES" ... Далее все через web интерфейс http://localhost:631 107 Использование эмуляторов QEMU [garant:~/qemu] % cat start_freebsd.sh #!/bin/sh # qemuimg create qemu_freebsd.img 512M # qemu cdrom /dev/acd0 boot d qemu_freebsd.img & # qemu k ru net tap,script=tun_up_freebsd.sh net nic qemu_freebsd.img & qemu net tap,script=tun_up_freebsd.sh net nic qemu_freebsd.img & /etc/rc.d/named stop sleep 3 /etc/rc.d/named start [garant:~/qemu] % cat tun_up_freebsd.sh #!/bin/sh ifconfig $1 192.168.113.1 netmask 255.255.255.0
|