
- •1Изучение unix® (Linux)
- •1.1Человеко-машинные системы
- •1.2Процедурные системы
- •1.3Проективные системы
- •1.4Открытые технологии
- •1.4.1История развития gnu/Linux
- •1.4.2Архитектура и философия unix®.
- •2Компоненты unix®
- •2.1Ядро
- •2.2Управление памятью
- •2.3Управление процессами
- •2.4Демоны
- •2.5Понятие файла в Linux
- •2.6Организация хранения файлов
- •2.6.1Что такое файловая система?
- •2.7Файловые системы Linux
- •2.8Утилиты
- •2.9Типы программ
- •3Процедура загрузки ос Linux
- •3.1Основные конфигурационные файлы
- •3.2Загрузка в однопользовательском режиме
- •3.3Настройка общесистемных сервисов
- •3.3.1Редактирование файла /etc/fstab
- •3.4Файлы и разделы подкачки
- •3.5Запуск демонов
- •3.6Процессы
- •3.7Управление процессами
- •3.7.1Команда ps
- •3.7.2Команда top
- •3.7.3Приоритеты
- •3.7.4Сигналы и команда kill
- •3.7.5Перевод процесса в фоновый режим
- •3.8Gnu grub загрузчик
- •3.8.1Что такое grub?
- •3.8.2Компиляция и инсталляция программного пакета grub
- •3.8.3Инсталляция загрузчика grub
- •3.8.4Конфигурация grub
- •4Справочная система Linux
- •4.1Руководство (man)
- •4.1.1Утилита man
- •4.2Утилиты whatis и apropos
- •4.3Работа с man
- •4.3.1Система info
- •4.3.3Howto файлы
- •4.3.4Ресурсы в Интеренете.
- •5Оболочка, Shell, командный интерпетатор.
- •5.1Начало работы с Shell
- •5.2Программы
- •5.2.1Выполнение команд
- •5.3Команды Shell
- •5.3.1Опции
- •5.3.2Аргументы
- •5.3.3Исключения
- •5.4Виртуальные консоли
- •5.5Псевдонимы и переменные
- •5.6Навигация и редактирование
- •5.7История команд
- •5.8Простые регулярные выражения
- •5.9Запуск команды на выполнение
- •5.10Стандартный ввод/вывод
- •5.11Фильтры
- •6Shell как язык программирования
- •6.1Сценарий
- •6.2Запуск сценария
- •6.3Встроенные переменные
- •6.4Условия проверки
- •6.4.1Сложные условия поиска:
- •6.4.2Условный оператор "if"
- •6.4.3Конструкции
- •6.4.4Оператор вызова ("case")
- •6.4.5Пустой оператор
- •6.5Функции в shell
- •6.6Популярные команды
- •6.6.1Поиск файлов.
- •6.6.2Поиск внутри файла
- •7Управление пользователями
- •7.1Структура файла /etc/passwd
- •7.2Структура файла /etc/group
- •7.3Псевдопользователи
- •7.4Команды работы с учетными записями пользователей
- •8Установка программного обеспечения
- •8.1Утилита rpm
- •8.2Утилита Apt
- •8.2.1Использование apt
- •8.2.2Установка или обновление пакетов.
- •8.2.3Удаление установленного пакета.
- •8.2.4Обновление всех установленных пакетов
- •8.2.5Поиск в репозитарии
- •9Сборка по из исходных кодов
- •9.1.1Необходимые сведения о программировании на языке Си
- •9.1.2Инсталляция из исходных текстов
- •10Файловая система
- •10.1Основы работы файловых стистем
- •10.1.1Файлы
- •10.1.2Каталоги
- •10.1.3Типы файлов
- •10.1.4Файлы физических устройств
- •10.1.5Именованные каналы (pipes)
- •10.1.6Сокеты (sockets)
- •10.1.7Символические ссылки
- •10.1.8Права доступа к файлам и каталогам
- •10.1.9Расширенные атрибуты доступа
- •10.2Управление файловой системой
- •10.2.1Разбиение диска на разделы, fdisk
- •10.2.2Создание и монтирование файловых систем
- •10.2.3Команды для работы с файлами
- •10.3Команда find и символы шаблонов для имен файлов
- •10.4Команда split — разбиваем файл на несколько частей
- •10.5Сравнение файлов и команда patch
- •10.6Команды архивирования файлов
- •10.6.1Программа tar
- •10.6.2Программа gzip
- •10.6.3Программа bzip2
- •10.6.4Примеры применения tar
- •11Сетевая файловая система (nfs)
- •11.1Запуск nfs
- •11.2Монтирование тома nfs
- •11.4Файл exports
- •12Популярные приложения
- •12.1Эффективная работа с vim
- •12.2Эффективно передвигаемся по файлу
- •12.3Вставка
- •12.4.1Использование mc
- •12.4.2Встроенный ftp-клиент
- •12.4.3Переименование групп файлов
- •13Сетевые средства Linux
- •13.1Общие сведения о сетях
- •13.1.1Стек tcp/ip
- •13.1.2Адресация Internet
- •13.1.3Система имен доменов (dns - Domain Name System)
- •13.1.4Модель Клиент-Сервер
- •13.1.5Адреса tcp/ip
- •13.1.6Преобразование адресов
- •13.2Конфигурация сетевых интерфесов
- •13.2.1Адрес сети
- •13.2.2Широковещательный адрес
- •13.2.3Адрес шлюза
- •13.2.4Адрес сервера имен
- •13.2.5Маска сети
- •13.3Файлы конфигурации tcp/ip
- •13.3.1Файл /etc/hosts
- •13.3.2Файл /etc/networks
- •13.3.3Файл /etc/init.D/network
- •13.3.4Параметры dns
- •13.3.5Файл host.Conf
- •13.3.6Файл /etc/resolv.Conf
- •13.4Команда ifconfig
- •13.5Маршрутизация
- •14Контроль состояния сети
- •14.3Команда lsof
- •14.4Проверка arp-таблиц
- •15Управление работой межсетевого экрана (брандмауэра) netfilter
- •15.1Настройка межсетевого экрана Iptables
- •15.2Порядок прохождения таблиц и цепочек
- •15.2.1Общие положения
- •15.3Как строить правила - основы
- •15.3.1Команды
- •15.3.2Критерии
- •15.3.3Общие критерии
- •15.4Неявные критерии
- •15.4.1Tcp критерии
- •15.4.2Udp критерии
- •15.4.3Критерий mac
- •16Shorewall: iptables с человеческим лицом
- •16.1Базовая настройка
- •16.2Фильтрация трафика
- •16.3Дополнительные возможности
- •16.3.1Вместо заключения
- •16.4Приложение. Устанавливаем Shorewall
- •17Управление ядром
- •17.1Версия ядра
- •17.2Причины для пересборки ядра
- •17.3Подготовка
- •17.4Компиляция (Make)
- •17.5Установка заплат
- •17.6Сборка единичного модуля
- •18Мониторинг системы
- •18.1Система ведения логов
- •18.2Демон Syslogd
- •18.2.1Параметры запуска
- •18.2.2Сигналы
- •18.2.3Файл конфигурации
- •18.2.4Советы по настройке syslog
- •18.3Logger - утилита записи в журнал
- •18.4Logrotate или "что делать со старыми журналами?"
- •18.5Logwatch или "как извлечь полезную информация из кучи мусора?"
- •19Cron - планирование заданий
- •19.1Настройка задач Cron
- •19.2Запуск и остановка службы
- •19.3Системное время
- •20Резервное копирование в Linux
- •20.1Использование серверов резервного копирования
- •20.2Аппаратные средства, предназначенные для создания резервных копий
- •20.3Способы резервного копирования
- •20.3.1Резервное копирование, инициируемое клиентом
- •20.3.2Резервное копирование, инициируемое сервером
- •20.4Использование tar
- •20.4.1Возможности tar
- •20.4.2Список команд tar:
- •20.4.3Использование smbtar
- •20.4.4Создание разделяемых объектов резервного копирования
- •20.5Обзор и установка системы резервного копирования BackupPc
- •20.5.1Введение
- •20.5.2Требования к установке
- •20.5.3Настройка BackupPc
- •20.5.4Интерфейс
- •21Основы безопасности Linux
- •21.1Меры предосторожности
- •21.2Принципы защиты
- •21.3Идентификаторы пользователя и группы пользователей
- •21.4.1Безопасность файлов
- •21.5Важные системные файлы
- •21.6Проблемы защиты /etc/passwd и /etc/shadow
- •21.6.1Скрытые пароли
- •21.6.2Устаревание паролей
10.4Команда split — разбиваем файл на несколько частей
Иногда бывает необходимо разбить один большой файл на несколько файлов меньшего объема. Для примера рассмотрим ситуацию, когда вы хотите перенести на свой домашний компьютер файл song.mp3 формата "MP3", размером в 4,894,425 байт. Возможности перекачать этот файл по сети у вас нет, и единственно возможный способ переноса — воспользоваться дискетами. Но, поскольку на одну дискету файл не помещается, требуется разбить его на несколько маленьких файлов, а потом "собрать" снова. Для решения этой задачи можно воспользоваться командой split.
Команда split копирует файл, разбивая его на отдельные файлы заданной длины. В качестве аргументов ей надо указать имя исходного файла и префикс имен выходных файлов. Имена выходных файлов будут составляться из этого префикса и двух дополнительных букв `aa', `ab', `ac' и т. д. (без пробелов и точек между префиксом и буквами). Если префикс имен файлов не задан, то по умолчанию используется ‘x’, так что выходные файлы будут называться `xaa', `xab' и т. д..
Кроме аргументов можно задать опцию -b, определяющую размер выходных файлов в байтах. Вслед за –b должно стоять число, а за ним — буква k (показывающая, что размер выходного файла указан в килобайтах) или m (значит размер задан в мегабайтах). Если опция не задана, то по умолчанию размер выходных файлов принимается равным 1 Мбайту. Таким образом, чтобы перенести на дискетах файл song.mp3 надо вначале дать команду
[user]$ split -b1400k song.mp3 song.
скопировать полученные файлы song.aa, song.ab, song.ac, song.ad, song.ae на отдельные дискеты, перенести их на домашний компьютер, скопировать в какой-нибудь каталог и восстановить исходный файл с помощью команды
[user]$ cat song.* > song.mp3
после чего можно удалить временные файлы song.xx.
10.5Сравнение файлов и команда patch
Вы не замечали, что задача сравнения содержимого двух различных файлов возникает при работе с компьютером удивительно часто? Конечно, ведь так легко скопировать файл, а потом забываешь, какая же из версий новее или качественнее (по одному автору ведомым критериям). Так что инструменты для сравнения файлов просто необходимы и Linux такие инструменты предоставляет.
Простейший из них — команда cmp. Эта команда просто сравнивает содержимое двух файлов по-байтно:
[user]$ cmp file1 file2
Если файлы полностью совпадают, она молча заканчивает свою работу (происходит возврат к командной строке без каких-либо дополнительных сообщений), а если файлы различаются, выдаются номер строки и номер байта в строке, где имеет место первое различие.
Опции команды
-b --print-bytes Выводить различающиеся байты.
-i Н --ignore-initial=Н Игнорировать различия в первых Н байтах ввода.
-i Н1:Н2 --ignore-initial=Н1:Н2
Пропустить первые Н1 байт файла ФАЙЛ1 и первые Н2 байт файла ФАЙЛ2.
-l --verbose Выводить номера и значения всех различающихся байт.
-n ПРЕДЕЛ --bytes=ПРЕДЕЛ Сравнивать не более указанного числа байт.
-s --quiet --silent Не выводить, только сообщить возвращаемое значение.
Информации, выдаваемой командой cmp, маловато для того, чтобы принять, например, решение о том, какой из двух файлов нам более ценен, но для использования в скриптах с целью выявления отличающихся файлов больше ничего и не надо.
Команда diff служит для получения полного отчета о том, каковы же различия в интересующих нас файлах. Для получения отчета достаточно указать команде, какие именно файлы сравнивать:
[user]$ diff paper.old paper.new
Отчет о выявленных различиях будет выдан на стандартный выход. Естественно, его лучше перенаправить в файл:
[user]$ diff paper.old paper.new >paper.diff
Для оценки версий одного и того же файла более удобна может оказаться команда sdiff, которая выдает результат сравнения в виде двух столбцов, разделенных пробелами. Если строки с одинаковыми номерами в файлах различаются, то в выводе команды sdiff они разделены вертикальной чертой |. Если строка имеется только в первом файле, она отмечена знаком <. Соответственно, строка, встречающаяся только во втором файле, помечена знаком >.
Существует также команда diff3, которая позволяет сравнить сразу 3 файла.
Но все же наиболее часто используется традиционная для UNIX®-систем команда diff. Эта ее востребованность объясняется тем, что создаваемый ею отчет о различиях двух файлов может быть использован командой patch. Чаще всего эти возможности используются при распространении обновлений программного обеспечения. Предположим, что некоторое программное приложение было разослано пользователям в виде файла program.c, содержащего исходный код программы на языке Си. После этого разработчик внес в программу некоторые исправления и сохранил текст в виде файла program.c.new. Требуется довести исправленный текст программы до пользователей. Очевидно, что пользователям достаточно сообщить только исправления, т. е. отчет об изменениях, создаваемый по команде
[user]$ diff program.c program.c.new > program.c.diff
Естественно, объем файла program.c.diff существенно меньше объема файла program.c.new, так что можно было бы получить существенную экономию на передаче файлов, если отправлять пользователям только файл program.c.diff (ведь объемы современных программных приложений составляют десятки мегабайт). Однако пользователи должны иметь возможность внести эти исправления в имеющуюся у них версию программы. Эту задачу позволяет решить команда patch. Имея файлы program.c и program.c.diff, пользователь может дать команду
[user]$ patch program.c program.c.diff > program.c.new
в результате выполнения которой он получит файл program.c.new.