Linux cheatsheets


Ось знайшов дуже класну річ Linux - cheatsheets: Автору РЕСПЕКТ!

А ось і оновлена та розширена версія Настольная книга по Linux.

Ну і звісно репост (причому вже третій раз) так на всякий…

Linux-шпаргалка

1 Работа в командной строке_

1.1 Настройка_

1.2 Горячие клавиши_

1.3 Скриптинг_

2 Работа с жестким диском_

2.1 Состояние дисковой подсистемы_

2.2 Работа с CD/DVD_

2.3 Разметка диска_

2.4 LVM_

2.5 Монтирование_

2.6 Swap_

2.7 Образ диска_

3 Система_

3.1 Работа с железом_

3.2 Работа с файлами_

3.3 Управление программами_

3.4 Системная конфигурация_

3.5 Управление пользователями_

3.6 Анализ нагрузки_

4 Сети_

4.1 Установка_

4.2 Файлы конфигурации_

4.3 Управление_

4.4 Мониторинг_

4.5 Сетевые сервисы_

4.6 Тестирование_

1 Работа в командной строке

pinfo bash - Удобная замена info.

chmod -R 741 /var/www/files – Сменить права рекурсивно во всей папке files на rwx r– –x, где: 4 – чтение (r), 2 – запись (w), 1 – исполнение (x).

find

/usr/bin -type f -mtime -10 - Найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней.

find /usr/uplifto ( -name *.htm -o -name ‘*.html’ ) -exec enconv -V –convert-to=UTF-8 {}; - Конвертировать найденные файлы в правильную кодировку.

1.1 Настройка

~/.bashrc - Глобальная настройка (alias pya=‘ping -c4 ya.ru’) и запуск программ при первичном входе, и при каждом открытии консоли.

~/.bash_profile - Применяется только при входе в систему, автозапуск пользовательских приложений.

~/.bash_logout - Выполнение сценариев при выходе.

1.2 Горячие клавиши

«Esc+.» - Вставка последнего аргумента предыдущей команды (здорово жизнь упрощает). «Alt+.» - то же.

«Shift+PgUP» - Просмотреть вывод выходящий за границы экрана.

«Ctrl+Z» - Перевести текущую задачу в фоновый режим $ fg x вернуть процесс (где x=1-…), а $ xxx & запуск программы в фоновом режиме.

«Ctrl+R» x - Поиск по истории, для поиска нажимать несколько раз «Ctrl+N» - в обратную сторону.

«Ctrl-U» - Вырезает все слева от курсора, а «CTRL+Y» вставляет.

«Ctrl-K» - Удаляет все что справа от курсора.

«ALT-B» - Перейти на слово назад, а «ALT-F» вперед.

1.3 Скриптинг

' - Стогие кавычки, передать не интерпретируемое значение.

` - Обратная кавычка, выполнить содержание скобок, почти то же что и $().

- Двойные кавычки, подстановка переменных и предотвращение разбиение на слова.

ping -с1 ya.ru ; echo «host» - Пропинговать ya.ru, затем просто вывести сообщение.

ping ya.ru || echo «bad host» - Пропинговать ya.ru, в случае неудачи вывести сообщение.

ping ya.ru && echo «ok host» - Пропинговать ya.ru, в случае успеха вывести сообщение.

& - Амперсанд.

| - Прямая черта.

> - Перенаправить вывод в файл.

>> - Дописать в конец фала.

&> - Оба вывода в один файл.

2> - Вывод только ошибок в файл.

echo $? - Просмотр статус вывода комманды (не 0 = ошибка).

$! - PID последнего запущенного процесса в фоновом режиме.

$1, $2, $3 - Првый, второй и тетий аргументы переданные программе.

$@ - Каждый из аргументов переданных программе.

$# - Число аргументов.

2 Работа с жестким диском

Производительность жесткого диска ограничена “средним времем доступа” обычно 8 мс, а предел производительности считается P=1000/8*0,85=106 обращений к диску, если в системе этот параметр завышен, создается очередь к диску, и производительность дисковой подсистемы начинает падать по экспоненте.

Посмотреть iostat, столбец tps.

Скорость чтения:

RAID10 = RAID5 NxP > RAID0 = RAID1 NxP > HDD, где N - количество дисков.

3х106=318 > 2x106=212 > 106

Скорость записи:

RAID0 NxP > RAID10 N/2xP > RAID1 = HDD  = RAID5

/boot — здесь хранится файл ядра — обычно имеет имя vmlinuz (обычно настраивается grub и удаляется из /etc/fstab);

/bin — программы минимальной работоспособности системы;

/lib — библиотеки C;

/opt — вспомогательные программы;

/proc — образы выполняющихся процессов;

/root — начальный каталог root’а;

/mnt — сюда монтируются сменные носители (floppy, cd-rom, flash и др.);

/dev — каталог устройств;

/etc — каталог конфигурационных файлов;

/tmp — каталог временных файлов;

/usr — каталог большинства стандартных программ и компонентов;

/var — каталог хранения логов, буферные каталоги;

/var/log — логи;

/home — каталог домашних директорий пользователей.

2.1 Состояние дисковой подсистемы

$ rescan-scsi-bus -l - После добавления sata-диска, чтобы он определился системой (полезно для горячей замены!)

$ cat /proc/scsi/scsi - Посмотреть подключенные диски.

$ df -h - Показывает занятость всех дисков (включая подмонтированные).

$ du -smc –exclude={proc,sys,dev} / | sort -g* - Получаем отсортированный список самых “тяжелых” каталогов в мегабайтах.

$ du -hs /xxx - Определение места занимаемого файлом/папкой на жестком диске.

$ du -hs /var/ - А так можно быстро найти виновника переполненного диска (буду рад, если подскажете способ поизящнее).

$ hdparm -tT /dev/sda - Тестирование производительности диска, ей же можно тонко настроить производительность (обычно не нужно, т.к. современные системы корректно определяют параметры, если очень хочется то на Opennet.ru)

$ dd if=/dev/sdx of=/dev/null bs=1M - Вроде как выявление проблем с диском.

hddtemp /dev/sd[a-z] - Температура жестких дисков в системе (раб. < 60°C)

2.2 Работа с CD/DVD

dd if=/dev/cdrom of=cd_image.iso wodim dev=/dev/hdc -eject -v mycd.iso

2.3 Разметка диска

Разметка диска, по сути - запись (таблица разделов в самом начале диска начиная с 447 байта 64 байта), о том где и какие разделы расположены физически на диске. Т.е. редактируя таблицу разделов, данные (находящиеся на жестком диске) остаются нетронутыми.

$ sfdisk -luM /dev/sda - Информация о разделах на диске (-uM) в мегабайтах.

$ partprobe - Применяет изменения таблицы разделов.

$ cat /proc/partitions - Tаблица разделов, с которыми работает ядро.

$ mkfs.ext3 -L fsroot /dev/sda6 - Создать файловую систему ext3 c лайблом “fsroot”.

$ tune2fs -L fsroot /dev/sda6 - Присвоить лайбл “fsroot” диску, для удобства монтирования или e2label /dev/sda6 fsroot.

$ blkid - Отображает атрибуты (лайбл) блочных устройств.

$ mount LABEL=fsroot /mnt/data - Монтрирование по лейблу.

$ sfdisk -d /dev/sda | sfdisk /dev/sdb - Копирование таблицы разделов с sda на sdb.

$ sfdisk -d /dev/sda > sda.mbr.bak - Копирование mbr в файл (файл можно редактировать).

$ sfdisk /dev/sda < sda.mbr.bak - Восстановление mbr из файла.

$ dd if=/dev/sda of=/root/sda.mbr.img bs=512 count=1 - Копирование mbr в файл, самый надежный способ.

$ dd if=/dev/zero of=/dev/hda bs=512 count=1 - Очищаем mbr (внимательно!). Если без таблицы разделов, то bs=446.

2.4 LVM

wiki <https://sites.google.com/site/kirillrst/home/linuxlog>, LVM Administrator's Guide <https://sites.google.com/site/kirillrst/home/linuxlog>.

$ pvcreate /dev/md1 - Размечем диск как “физический том”.

$ vgcreate -s 128M VG /dev/md1 - Создаем “группу томов”.

$ lvcreate -l 100%FREE -n bak VG - Создаем “логический том” на все доступное пространство.

$ mkfs.ext3 /dev/VG/bak - Создаем файловую систему. $ lvresize -L +10G /dev/VG/date1 - Добавляет в логический том 10Гб, при их наличии в физическом томе.

$ resize2fs /dev/VG/date1 - Расширяем раздел находу на все доступное пространство (для ext3).

2.5 Монтирование

$ mount -t cifs //192.168.0.122/data /mnt/amigoglobal/data -o user=USER,pass=PASSWORD - монтирование виндовых разделов

$ mount -o loop /mnt/bak/disk/LiveCD/newcd/live.iso /mnt/cdrom/ - монтировать iso образ

$ mount -a - Монтировать все из fstab (напр. при добавлении ресурсов)

$ cat /proc/mounts - подробная инфа о примонтированных устройствах. Елси нужно коротко, то df -h.

$ fuser -v /opt - Узнать, кто занимает ресурс. Напр., если не дает размонтировать.

$ fuser -km /opt - Принудительное размонтирование раздела.

$ mount -o remount,rw /dev/sda1 / - Перемонтировать. Напр., при изменении опций.

$ umount -l /dev/sdb1 - Размонтировать, когда ресурс освободится.

$ mount –bind olddir newdir - Примонтировать одну деректорию к другой.

.. _2.6 Swap:

2.6 Swap

Создаем своп-файл вместо раздела. Дает гибкость в управлении дисковыми ресурсами (при LVM, RAID, XEN). Обычно своп равен объему ОЗУ, после 2GB не актуально.

$ dd if=/dev/zero of=/swapfile bs=1024 count=1048576 - Сначала создаем файл заполненый нулями необходимого размера (у нас 1Гб).

$ mkswap /swapfile - Файл размечаем как своп.

$ swapon /swapfile - Включаем.

Проверяем: $ free -m

total used free shared buffers cached

Mem: 520 510 10 0 1 372

-/+ buffers/cache: 136 384

Swap: 1023 0 1023

Где 1023 объем свопа, доступного системе. Таким образом можно добавить еще один своп-файл, объем которого приплюсуется к текущему, или отключить (swapoff). Осталось только добавить строку в файл /etc/fstab: /swapfile swap swap defaults 0 0

2.7 Образ диска

$ dd if=/dev/zero of=/null bs=1024 ; rm -f /null забиваем свободное место на диске нулями, чтобы dd мусор не сохранял, и сразу удаляем.

$ dd if=/dev/sda2 bs=16M | gzip -c > /mnt/bak/sda2.img.gz - где bs=16M - размер кэша на винчестере. Побитное копирование раздела с последующей упаковкой, я использую для бэкапа свеже настроенных систем (копирует вместе с файловым мусором, зато надежно).

$ gunzip -с /mnt/bak/sda2.img.gz | dd of=/dev/sda2 bs=16M - Восстановление из сжатого образа.

$ dd if=/dev/hda bs=64K | gzip -c | ssh user@hostname “dd of=hda.img.gz bs=64k”

$ dd if=hda.img.gz | ssh -c blowfish user@deadhost “gunzip -c | dd of=/dev/hda1 bs=64k”

3 Система

3.1 Работа с железом

modprobe -r pcspkr - Выключить динамик на материнской плате.

При чтении из /dev/dsp мы получаем несжатый [аудио] (http://ru.wikipedia.org/wiki/%D0%90%D1%83%D0%B4%D0%B8%D0%BE>)‐поток с микрофона <http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%84%D0%BE%D0%BD>_ компьютера через вход звуковой карты <http://ru.wikipedia.org/wiki/%D0%97%D0%B2%D1%83%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BA%D0%B0%D1%80%D1%82%D0%B0>_. Например, можно выполнить команду **«cat /dev/dsp > ./wave-file.wav»**, который же, в последствии, можно будет снова вывести на /dev/dsp (**cat ./wave-file.wav > /dev/dsp**).

.. _3.2 Работа с файлами:

3.2 Работа с файлами

**$ tar -cjvf /home/user/etc_date '+%Y-%m-%d'.tar.bz2 /etc** - *(с)* Запаковать в *(f)* tar-архив и *(j)* сжать *bzip2* папку */etc* c текущей датой в имени файла, с *(v)* подробным выводом.

$ tar -xzvf /home/user/Downloads/centerim-4.22.6.tar.gz -С /opt/ - *(x)*Распаковать *(z)*gzip-архив в /opt.

*$ cat /etc/mail.conf | grep -v “#” | sed -e ‘/^ $/d’ - Показать файл без комментариев и пустых строк (неоптимально).

$ chattr +Sai - (S) Добавление атрибутов к файлу, синхронное изменение всех данных на диск, без кэширования; (a) только добавление данных, удаление и переименование запрещено; (i) запрещено удаление, изменение или переименование (immutable).

$ ls -f1 /var/log/packages/ | wc -l - Вывести количество строк.

$ diff -y httpd.conf httpd.con.new - Сравнение в две колонки.

$ diff -u httpd.conf httpd.con.new - Унифицированное cравнение (в один столбец, но читаемо). (рек. colordiff).

find /bakdir -name bak-20??-??-??.tar.gz | sort | head -n -7 | egrep -v 20[01][0-9]-[01][0-9]-01 | while read I ; do rm -v “$I” ; done - Вымученная изящная конструкция, по очистке бэкап архивов, которая оставляет файлы за последнюю неделю и каждое первое число. find выводит список наших бэкап файлов, формат которых bak-год-месяц-число.tar.gz, sort правильно сортирует, head передает все файлы, кроме последних 7-ми, egrep исключает файлы за первое число, конструкция while удаляет остальное.

$ tail -n +5 /file - Вывести строки, начиная с 5-ой.

.. _3.3 Управление программами:

3.3 Управление программами

fds “0-5 20,22 * * 1-5 root bak.sh” - Запись в /etc/crontab означает, что bak.sh будет выполняться каждую минуту с 20:00 по 20:59 и с 22:00 по 22:59 каждый день с понедельника по пятницу.

$ kill -TERM cat /usr/local/apache2/logs/httpd.pid - Послать сигнал процессу.

$ pgrep httpd - Выводит PID‘ы процессов.

$ pkill httpd - Послать сигнал найденным просессам.

$ killall /usr/sbin/httpd - Послать сигнал процессу только по полному имени.

$ nice -n -20 command - Запустить command с наивысшим приоритетом.

$ yum install xxx -y - Установка программы из репозитория.

$ yum list - Вывод всех пакетов (проверка работоспособности репозитория).

$ yum search foo - Ищет в названии пакета и его описании указанную строку.

$ yum check-update - Просмотр доступных обновлений.

$ yum update foo fi - Обновит только пакеты foo и fi.

$ rpm -iv xxx - (i) Установка из пакета, (v) подробно.

$ yum whatprovides /usr/sbin/epstopdf - поиск названия покета, по файлу.

# yum localinstall foo - Установка пакета из файла, а не репозитория; зависимости разрешаются из репозитория.

$ yum list installed | grep ssl - Посмотреть, установлен ли пакет.

# rpm -qa - Простмотреть все установленные пакеты.

$ env LANG=en_EN - Запуск программы в другой локали.

.. _3.4 Системная конфигурация:

3.4 Системная конфигурация

$ ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime - Установка часового пояса.

$ sysctl -p - Применить настройки /etc/sysctl.conf (для слаки вероятно параметры задавать в rc.local)

notify-send -i appointment -u critical -t 3000 ‘Еманарот!' - Вывод уведомления для Х’ов критической важности с ярлычком в течении 3 секунд.

.. _3.5 Управление пользователями:

3.5 Управление пользователями

Основы системного администрирования <http://www.linux.org.ru/books/Distro/Slackware/html/use_5.html>_

$ adduser -r munin - Создать системного пользователя munin.

$ adduser –system –no-create-home –group squid

$ vipw - Блокирует /etc/passwd, так, чтобы другие команды не могли модифицировать его в то же самое время. $ vigr - Редактирует /etc/groups аналогичным образом.

.. _3.6 Анализ нагрузки:

3.6 Анализ нагрузки

$ zless /usr/share/doc/linux-doc-2.6.28/filesystems/proc.txt.gz

ibm <http://www.ibm.com/developerworks/ru/edu/l-lpic3306/section2.html>_

Руководство по настройке производительности <http://www.regatta.cmc.msu.ru/doc/usr/share/man/info/ru_RU/a_doc_lib/aixbman/prftungd/2365c52.htm>_

Методы оптимизации ОС Linux <http://www.xakep.ru/magazine/xs/063/054/1.asp>_.

vmstat 5 - Вывод усредненных значений за 5 секунд (1я строка - с начала работы ПК), где r - количество процессов в очереди выполнения на момент измерения; b - количество процессов, заблокированных операциями ввода/вывода; swpd - количество памяти, выгруженной на диск (Kb); free - количество памяти, не используемой приложениями, буферами или кэшем; buff - количество памяти выделено под буферы (хранятся линейные дисковые блоки); cache - количество памяти выделено под кэш (хранятся файлы).

iostat 5 -m [ -p | -x ] - Бомба!

iotop

atop - Анализ нагрузки отдельными программами на дисковую подсистему (надо патчить ядро).

Если у Вас есть раздел подкачки или файл подкачки на флешке, Вы можете захотеть постоянно перемещать его на другую часть диска что бы убедиться что разные части диска изнашиваются одинаково из-за частых записей, которые он генерирует. Для файла подкачки это может быть сделано путем создания нового файла подкачки перед удалением старого.

Если у Вас есть раздел подкачки или файл подкачки хранимый на флешке, Вы можете убедиться что он используется как можно меньше установив /proc/sys/vm/swappiness в 0.

Ядро также имеет настройку известную как laptop_mode (режим ноутбука), которая заставляет его откладывать запись на диск (изначально создавалась с намерением позволить диску ноутбука останавливаться пока он не используется, отсюда и название). Несколько файлов в директории /proc/sys/vm/ контролируют его (режима) работу:

**/proc/sys/vm/laptop_mode**: Через сколько секунд после чтения данных должна начаться запись измененных файлов (это основано на предположении о том, что чтение вызовет раскрутку ранее остановленного диска).

**/proc/sys/vm/dirty_writeback_centisecs**: Как часто ядро должно проверять есть ли «грязные» (измененные) данные для записи на диск (в сантисекундах).

**/proc/sys/vm/dirty_expire_centisecs**: Насколько «грязны» должны быть данные, что бы ядро решило что они достаточно стары для записи на диск. В общем случае, это хорошая идея установить для этой опции такое же значение как и для *dirty_writeback_centisecs* выше.

**/proc/sys/vm/dirty_ratio**: Максимальный размер памяти (в процентах), для хранения грязных данных прежде чем процесс, их сгенерировавший, будет принужден записать их. Установка этому параметру высокого значения не должно быть проблемой, так как запись будет так же происходить если в системе закончится память.<br>

**/proc/sys/vm/dirty_background_ratio**: Минимальное число памяти (в процентах), где позволено хранить гразные данные вместо записи на диск. Этот параметр должен быть намного меньше чем *dirty_ratio* что бы позволить записывать куски грязных данных за один проход.

.. _4 Сети:


4 Сети

Канальный уровень предоставляет физический интерфейс к среде передачи (например, Ethernet).

Сетевой уровень управляет передачей пакетов по сети, обеспечивая их доставку получателю (этот процесс называют маршрутизацией).

Транспортный уровень обеспечивает управление потоком пакетов между двумя хостами в интересах прикладного уровня. Он также предоставляет приложению конечную точку взаимодействия, называемую портом.

Прикладной уровень обеспечивает представление данных, передаваемых через сокет. Эти данные могут, например, состоять из сообщений электронной почты, передаваемых по протоколу SMTP, или Web-страниц, передаваемых по протоколу HTTP.

.. _4.1 Установка:

4.1 Установка

$ neat-tui - Текстовый мастер установки сети (рекомендую), system-config-network-tui.

$ ethtool ethX - Информация/настройка о сетевой карте (скорость и тип соединения).

$ ifconfig ethX hw ether xx:xx:Xx:xx Смена мак-адреса сетевой карты (до перезагрузки)

.. _4.2 Файлы конфигурации:

4.2 Файлы конфигурации

/etc/sysctl.conf - Для маршрутизации пакетов в системе net.ipv4.ip_forward = 1

/etc/sysconfig/networking/devices/ifcfg-eth0 - Файл конфигурации интерфейса (/etc/sysconfig/network-scripts/ifcfg-eth0 - жесткая ссылка на него же)

/etc/resolv.conf - DNS-сервера провайдера (можно также указать в конфиге выше DNS{1,2}=, он приоритетней).

/etc/sysconfig/network - Прописываем имя машины (напр. HOSTNAME=localhost.localdomain).

/etc/hostname - Прописываем имя машины.

/etc/HOSTNAME - Прописываем имя машины (в RHEL также в /etc/sysconfig/network, задается дерективой “HOSTNAME=").

/etc/sysconfig/network-scripts/route-eth0 - Файл статической маршрутизации, с синтаксисом: 192.168.124.0/24 via 192.168.0.220 dev eth0 или ADDRESS0=192.168.124.0

NETMASK0=255.255.255.0

GATEWAY0=192.168.0.220

/etc/network/interfaces - Настройка сетевых интерфейсов.

/etc/udev/rules.d/70-persistent-net.rules - Переопределение имени инт. (напр. eth1 -> eth0)

.. _4.3 Управление:

4.3 Управление

$ ip route add 192.168.124.0/24 via 192.168.0.220 - Добавить маршрут (до перезагрузки).

$ ip addr add 192.168.0.100/24 dev eth0 - Добавить IP-адрес интерфейсу (до перезагрузки). Для совместимости с ifconfig в конце добавить “label eth0:0”.

$ tracert -i eth3 ya.ru - Трассировать через определенный интерфейс (для отладки маршрута).

.. _4.4 Мониторинг:

4.4 Мониторинг

$ ifconfig - Вывод конфигурации всех интерфейсов (рек. ip addr).

$ netstat -nnnl - Выводит список открытых сокетов (портов) в локальной системе.

$ netstat -ta - Список установленных соединений (-tunap еще интересно).

fds $ lsof -i -n - Список открытых портов и соединений.

$ arp - Вывод arp-таблицы (нужно для выяснения физической доступности в сети, или выяснения МАС-адреса соседа). Кошерней ip neigh (или ip n).

$ tcpdump -vvvnnni eth0 not port ssh and not 3389 and not 80 and not 5191 and not 443 and not 53 and not 2222 and not 5223 and n

.. _4.5 Сетевые сервисы:

4.5 Сетевые сервисы

rdesktop 192.168.0.1 -u admin -p ‘pass’ -fzPa8 -k ru - Подключение к-RDP серверу со сжатием, кэшированием, на полный экран, с русской раскладкой. Выход из терминала

ssh -L5555:192.168.0.10:80 root@213.27.57.236 - после установки соединения твой локальный порт 5555 будет проброшен на 192.168.0.10:80

pdsh -w root@host-0[1-7,10] uptime - Выполнить команду uptime на хостах с 1 по 7 и на 10ом. Предварительно должен быть настроен вход ssh по ключам.

pdcp -w root@host-0[1-7,10],root@otherhost /home/user/.vimrc /root/ - Копировать локальный файл .vimrc в папку /root на удаленных хостах. pdsh должен быть установлен на всех хостах.

trickle

knockd

ngrep

nsed

autossh

.. _4.6 Тестирование:

4.6 Тестирование

iperf -us -i1 -p 65005 - Запуск сервера в UDP с выводом раз в секунду, на порту 65005.

iperf -uc 83.239.146.78 -l100 -b20k -t180 - Тестирование UDP c длиной 100b с пропускной способностью 20к в течении 180 сек.

iperf -n 10m -p 65005 -c 192.168.0.254 - Послать 10 мегабайт, на порт 65005 The Easy Tutorial <http://www.openmaniak.com/iperf.php>_.

[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 4] 0.0- 1.0 sec 1.3 MBytes 10.0 Mbits/sec 0.209 ms 1/ 894 (0.11%)