Psst.. new poll here.
[email protected] web/email now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!
Paste
Pasted as Plain Text by Shaman ( 14 years ago )
Техника выживания в консоли.
Пусть эта заметка будет продолжением моей предыдущей статьи :)
И так, как вы уже могли заметить, дистрибутивов Linux очень и очень много, разумеется они достаточно сильно различаются, но у всёх есть общая часть - консоль.
Почему-то её боятся больше всего, хотя это очень удобный инструмент. Кроме того некоторые действия быстрее сделать в консоли, например: сменить адрес у сетевой карты, Windows - около 10 кликов мышкой + время на поиск кнопки, Linux - ввод 14 символов с клавиатуры).
Каждый, кто хочет освоить это систему как настоящий профессионал, должен знать основы работы в консоли.
В этой статейке я попробую доступно объяснить базовые приемы.
Этакий план действий:
1) Работа с файлами и папками. (Без этого никуда)
2) Работа с дисками. (Подключаем внешние носители данных)
3) Диагностика системы. (Достаточно общий раздел, где искать логи, как просмотреть подробную информацию о системе и тд)
4) Установка программ. (Пожалуй единственный раздел, где имеет смысл версия дистрибутива)
5) Сетевые утилиты. (Базовая настройка проводной/беспроводной сети)
Сначала я хотел выложить всё это как одну статью, но статья получается слишком объемной, поэтому я разобъю урок на два части (может быть на три).
"Поехали!" © Юрий Алексеевич Гагарин.
1. Фаил в системе Linux занимает наиважнейшее место, тк даже со всеми нашими устройствами система работает как с файлами, поэтому с ними надо уметь работать.
Начнем с самого простого: текстовые файлы.
Создать файл: touch <имя файла>
Изменить файл: nano <имя файла>
Откроется текстовый редактор, он должен присутствовать во всех популярных дистрибутивах, внизу будет написано куда нажимать ;)
Файл у нас есть, теперь надо его просмотреть, можно это сделать тем же редактором, а можно командой cat <имя файла>.
Если файл слишком большой и на экране не помещается, то используйте такую комбинацию команд: cat <имя файла> | less
"|" говорит системе, что весь результат работы первой команды (у нас cat), нужно передать второй (less).
less организует постраничный вывод. Выход кнопкой "q".
Дальше попробуем копировать файлы, это делает комонда cp: cp <имя файла> <путь куда копировать>.
Переименовывание файла: mv <имя файла> <новое имя файла>
У каждого файла есть свойство, которое позволяет определять права доступа к файлу. Очень хорошо это описано тут: http://ru.wikipedia.org/wiki/Chmod
И соответсвенно команда для работы с правами: chmod <параметры> <имя файла>.
Удалить файл rm <имя файла>
С файлами кажется все, разумеется есть туча других команд для работы с ними, но вам пока хватит
Теперь папки. Практически то же самое, кое-где только добавятся параметры.
Создать папку: mkdir <имя папки>.
Удалить папку рекурсивно (с содержимым): rm -r <имя папки>.
Переименовать папку mv <имя папки> <новое имя папки>
Перейти в папку: cd <путь к папке>, вернутся назад cd .. (. - обозначает текущий каталог, .. - каталог-родитель, ~ - домашняя папка)
Вывести текущий каталог: pwd.
Поиск файла или папки: locate <имя>.
Вывод содержимого текущей папки: ls, любой: ls <имя папки>
Для начала вам должно этого хватить.
2. Если у вас установлен KDE или GNOME, то он скорее всего будут делать всё за вас, содержимое ваших флешек можно найти в /media/ по-умолчанию.
В противном случае придется все делать ручками.
Нумерация дисков/разделов кардинально отличается от того, что мы наплюдаем в Windows.
Сначала это пугает, но поверьте подобная нумерация очень удобная.
Жесткие диски "лежат" в /dev/hd* или /dev/sd*
Вместо звездочки ставится буква английского алфавита порядковый номер которой соответствует номеру диска.
Например /dev/sda первый винт, /dev/sdd четвертый.
После ставится цифра номер раздела (отсчет с 1).
Например /dev/sda1 первый раздел первого диска, /dev/sdb1 первый раздел второго диска, /dev/sdc3 третий раздел третьего диска и тд.
Привод обычно находится в /dev/cdrom
mount/umount.
На самом деле эти команды позволяют работать не только с дисками, флешками, они могут подцепить файл образа как диск, могут смонтировать папку из сети.
Мы рассмотрим только приводы, диски, флешки, файлы.
Некоторые файловые системы в Linux имеют названия отличные от названия в Windows, это FAT12/16 - msdos, FAT32 - vfat, и в некоторых системах NTFS - ntfs-3g.
Желательно это запомнить.
Файловые системы:
ext
ext2
ext3
ext4
iso9660 (привод)
jfs
msdos
ntfs (ntfs-3g)
udf (привод)
vfat
xfs
Монтирование - процесс при котором происходит подключение носителя данных и делается возможным чтение информации с него.
Для монтирования нужно как минимум два пути: что смонтировать и куда. В большинстве случаев требуется еще один параметр - тип файловой системы.
Общий вариант: mount -t <тип фс> <что> <куда>
Обратите внимание, что указывать нужно раздел, те /dev/sd**
Перед монтированием создают пустую папку (точка монтирования), где будут видны файлы
Пример: нужно смонтировать флешку /dev/sdb, FAT32 в папку на рабочем столе пользователя user.
1) Создаём папку: mkdir /home/user/Desktop/disk
2) Монтируем: mount -t vfat /dev/sdb1 /home/user/Desktop/disk
3) Обратите внимание, монтируется раздел /dev/sdb1, а не /dev/sdb
4) Всё :)
Так жа как и в Windows, здесь существует безопасное извлечение.
umount принимает всего один параметр: umount <что>
Пример с флешкой выше: umount /dev/sdb1
Папку можно удалять.
Для приводов разницы не будет, надо только правильно указать тип фс, и учесть его местоположение.
И наконец образы. С ними проще всего: mount -t <тип фс диска с которого сделан образ> <путь до образа> <куда монтировать>
Пока что Linux из коробки работать умеет только с iso.
Конец первой части.
Добрался наконец до второй части, первый пункт который я рассмотрю, это Диагностика системы.
3) Тут я расскажу о некоторых командах, позволяющих получить подробную информацию о системе.
Пожалуй самая главная команда, вывод которой просят на форумах при решении проблем, это uname.
У неё может быть несколько параметров, основной - "-a". "uname -a" - мы получим полное название системы с версией ядра, процессором и тд.
Вторая по значимости команда это dmesg. Она выводит содержимое лога ядра. Вставили новое устройство - там появится информация о нем, например куда оно подключилось.
Семейство команд ls* выводит подробнейшую информацию о железе и драйверах.
"lscpu" - Информация о процессоре
"lshal" - Информация об установленном оборудовании и драйверах
"lshw" - Тоже самое что и lshal но красивее. Нужен пакет lshw.
"lsmod" - Информация о загруженых модулях ядра. Думайте о них как о драйверах.
"lspci -vv" - Выводит список всех устройств на шине PCI.
"lsusb" - Информация о USB устройствах.
Где искать логи?
Каждая программа может писать их в разные катологи, в этом случае нужно ознакомится с документацией к ней. Стандарт - /var/log/
В эту папку пишут ядро, файрвол, ваша графическая оболочка и тд.
Вот несколько важных логов:
auth.log - открытие/закрытие сессий пользователей (вход/выход)
Xorg.0.log - лог Икс-сервера, если проблемы с графикой, в первую очередь смотрим тут.
httpd - апач
pacman.log - мой менеджер пакетов, у вас может быть другой
iptables.log - файрвол
dmesg.log - лог ядра
Названия остальных логов в большинстве случаев совпадает с названием приложения.
Этакий консольный диспетчер задач - top.
Лично мне хватает просто его окона, без горячих кнопок, которые выводятся по нажатию на "h".
Выход из него "q".
"ps" команда выводящая "снимок" текущих процессов в системе. Рекомендую параметры "aux". "ps aux" выведет полный список процессов.
Очень удобно использование этой команды в связке с grep. Например "ps aux | grep user" выводет список всех процессов пользователя user. (в некоторых дистрибутивах "ps -aux")
"killall" завершить процесс. Параметры - имя процесса и сигнал посылаемый процессу. "killall -9 <name>" - прибъет <name>, не оставив шансов на выживание.
uptime - время работы системы (текущая сессия)
date - текущая дата и время.
df -h - информация о ваших дисках
free - состояние оперативной памяти
Думаю пока что хватит, в повседневной работе вам понадобится меньшая часть вышенаписанных команд. Запомните, программы в *nix системах ВСЕГДА информируют пользователя о своих действиях.
4) Установка программ.
В user-friendly системах (ubuntu, opensuse) как правило существуют графические утилиты, облегчающие жизнь пользователю, а вот про установку программ из консоли знают не все.
Если честно, то мне лениво переписывать перевод оффициальной документации, поэтому я приведу ссылки на них :)) Если же вопросы остались, перечитайте еще раз ;)
Для установки пакета нужно знать его название, гугл поможет узнать его точно.
Самые основные дистрибутивы:
Ubuntu:
http://www.opennet.ru/man.shtml?topic=apt-get&category=8&russian=0
OpenSUSE:
http://ru.opensuse.org/Zypper/Использование
Fedora:
http://www.opennet.ru/man.shtml?topic=yum&category=8&russian=0
Debian:
см. Ubuntu
Mandriva:
http://wiki.mandriva.com/ru/Urpmi
Gentoo:
http://www.opennet.ru/man.shtml?topic=emerge&category=8&russian=0
ArchLinux:
http://wiki.archlinux.org/index.php/Pacman_(Русский)
А теперь немного о пакетах которые распространяются из исходников, как правило это архивы *.tar.gz или *.tar.bz2.
В первую очередь их надо распаковать, это делается командой "tar xvf <имя архива>". Распакованные файлы появятся в папке с названием как у архива.
Далее следует ознакомится с файлами README и/или INSTALL (или подобные). В них практически всегда есть инструкции.
Что бы установить пакет нужно удовлетворить все его зависимости, те установить пакеты которые требуются для корректной работы. Возможно у них тоже будут зависимости.
Как правило программы устанавливаются командой "make install", но перед этим нужно настроить инсталятор ("./configure") и собрать программу ("make"). Все команды нужно выполнять находясь в папке с распакованными файлами.
Иногда попадаются скрипты на питоне, в этом случае будет файл setup.py, его нужно запускать так: "python setup.py". Разумеется пакет "python" должен быть установлен.
Реже попадаются пакеты собираемые при помощи cmake или autotools.
Универсального способа собрать любой пакет не существует, везде есть нюансы, смотрите README и/или INSTALL для получения инструкций.
5) Вот мы и подошли, наверное, к самому важному разделу. Сеть.
Linux изначально разрабатывался как сетевая система, поэтому настройки сети очень просты и понятны.
Для начала немного теории на примере одноранговой сети с выходом в интернет. Одноранговые сети - это компьютерные сети, основанные на равноправии участников.
В таких сетях отсутствуют выделенные серверы, а каждый узел (peer) является как клиентом, так и сервером. В отличие от архитектуры клиент-сервера, такая организация позволяет сохранять работоспособность сети при любом количестве и любом сочетании доступных узлов.
Мы будем рассматривать 4-ю версию TCP/IP протокола.
У каждой машины в сети есть важный параметр (на самом деле их несколько), по которому эту машину можно идентифицировать. Это её IP адрес.
Адрес состоит из четырех октетов, октет это восемь разрядов двоичного числа. Для удобства адреса записывают в виде десятичных чисел.
Но на самом деле двоичная запись возникла не просто так, но об этом чуть позже. В восьми разрядах в двоичной системе можно записать 256 различных комбинаций.
256^4 - 4,294,967,296 уникальных адресов. Чтобы всю эту кучу адресов как-то поделить на группы, придумали маски. Большинство из вам наверняка знакомы с десятичной записью, но она не наглядна.
В определенных кругах маску принято писать одним десятичным числом через знак дроби после адреса сети. Например 192.168.0.0/24.
Это число обозначает количество единиц в двоичной записи маски. Те в данном случае 24-я маска запишется так:
11111111111111111111111100000000
Вспомнив что адрес сети так же записывается похожим образом получим, что номера единичных разрядов маски задают адрес сети, а разряды адреса соответствующие нулевым разрядам маски могут изменятся.
11000000 10101000 00000000 00000000 - адрес сети (192.168.0.0)
11111111 11111111 11111111 00000000 - маска сети (255.255.255.0)
Мы видим, что у нас изменятся может только один октет адреса, последний, причем полностью, что в десятичной системе значит диапазон от 0 до 255.
Следовательно диапазон адресов - 192.168.0.0 - 192.168.0.255.
Всего масок может быть 32.
Существуют специальные калькуляторы облегчающие подобные расчеты.
Следует помнить, что маской задаётся сеть, и ни одна машина из этой сети не увидит машину с адресом не принадлежащим этой сети. (Отсюда частовозникающие ошибки типа "Host is unreachable").
Обратное не всегда верно и в большинстве случаев зависит от аппаратной реализации.
Вотъ адресацию мы как бы разобрали, теперь наш пример:
Имеется сеть 192.168.0.0/24 (теперь вы должны представлять что это значит), сеть будет иметь доступ в интернет через 192.168.0.1.
Эта машина (192.168.0.1) будет называтся шлюзом.
Вот вам картинка что б понятнее было:
Прежде чем разбирать пример, введём понятие маршрута. Маршрут - адрес через который будут отправляться опеделенные пакеты.
Вернемся к примеру: все запросы из нашей сети должны идти в интернет. Существует понятие маршрут по умолчанию, это маршрут через который пойдут пакеты для которых не создно специальных правил.
И в догонку про DNS. Это такая служба, которая преобразует имена в адреса и наоборот.
Теперь как это все реализовать в Linux.
Для начала определимся со шлюзами:
192.168.0.1 - шлюз
есть два интерфейса (две сетевые карты или pppoe соединение), пусть ppp0 - инет, а eth1 (192.168.0.1) - локалка.
нам нужно организовать связь между ними.
1) настроим eth1: ifconfig eth1 192.168.0.1 netmask 255.255.255.0 up
2) настроим ppp0: pppoe-setup (или pppoeconf), отвечаем на вопросы и всё
3) инет на шлюзе есть, установим пакеты dnsmasq и ipmasq
4) echo 1 > /proc/sys/net/ipv4/ip_forward разрешим форвардинг
5) iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE пожалуй самая соль всего процесса
6) /etc/init.d/dnsmasq restart перезапустим dnsmasq
7) добавим "net.ipv4.ip_forward = 1" в /etc/sysctl.conf
со шлюзом всё.
настройка компов в сети:
1) адрес - любой из незанятых в сети, маска 24-я. ifconfig eth0 192.168.0.xxx 255.255.255.0
2) шлюз по умолчанию 192.168.0.1. route add default gw 192.168.0.1
Теперь подробнее о командах:
ifconfig - выводит информацию об активных интерфейсах
ifconfig -a - выводит информацию обо всех интерфейсах
ifconfig <имя> - выводит информацию о <имя>
ifconfig <имя> xxx.xxx.xxx.xxx - установить адрес <имя>
ifconfig <имя> netmask xxx.xxx.xxx.xxx - установить маску <имя>
ifconfig <имя> ether hw xxxxxxxxxxxxxxxx - установить mak адрес <имя>
ifconfig <имя> up - запустить <имя>
ifconfig <имя> down - остановить <имя>
route -n - вывод таблицы маршрутизации
route add xxx.xxx.xxx.xxx gw xxx.xxx.xxx.xxx - добавить маршрут
route del xxx.xxx.xxx.xxx - удалить маршрут
http://www.opennet.ru/base/net/ubuntu_route.txt.html - тут подробнее.
iptables - файрвол
http://iptables.ru/ - на русском, довольно не плохо написано.
Немного про Wifi. Все то же самое, добавится только пара команд.
iwconfig - специфическая настройка сети
iwlist - воспользуемся возможностью искать сети.
iwconfig - выводит инфирмацию о WiFi интерфейсах
iwconfig <имя> mode (ad-hoc|master|managed) - устанавливает режим работы
iwlist <имя> scan - выводит список доступных сетей. (<имя> должен быть запущен)
iwconfig <имя> essid - задаёт имя сети и подключается к ней.
iwconfig <имя> key s:passwd - задаёт пароль
iwconfig <имя> key (open|off|restricted) - задаёт тип ключа
http://translated.by/you/man-iwconfig-8-configure-a-wireless-network-interface/into-ru/ - подробнее.
Ну вот как бы самое основное я вам рассказал :)
При написании использовалась информация с сайтов:
http://www.opennet.ru/
http://translated.by/
http://iptables.ru/
http://wiki.archlinux.org/
http://wiki.mandriva.com/
http://ru.opensuse.org/
©Shaman, Специально для green-hack.net
При копировании просьба оставлять ссылку на http://green-hack.net/
Revise this Paste
Children: 22869