Показаны сообщения с ярлыком Linux Shell. Показать все сообщения
Показаны сообщения с ярлыком Linux Shell. Показать все сообщения

пятница, 29 марта 2013 г.

Ходовые команды Linux


cat file1 вывести содержимое файла file1 на стандартное устройсво вывода
tac file1 вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1 постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1 вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -2 file1 вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -f /var/log/messages выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.

Манипуляции с текстом

cat file_originale | [operation: sed, grep, awk, grep и т.п.] > result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file_originale | [operazione: sed, grep, awk, grepи т.п.] >> result.txt общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug"
grep ^Aug /var/log/messages из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, начинающиеся на "Aug"
grep [0-9] /var/log/messages из файла '/var/log/messages' отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/* отобрать и вывести на стандартное устройство вывода строки, содержащие "Aug", во всех файлах, находящихся в директории /var/log и ниже
sed 's/stringa1/stringa2/g' example.txt в файле example.txt заменить "string1" на "string2", результат вывести на стандартное устройство вывода.
sed '/^$/d' example.txt удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d' example.txt удалить пустые строки и комментарии из файла example.txt
echo 'esempio' | tr '[:lower:]' '[:upper:]' преобразовать символы из нижнего регистра в верхний
sed -e '1d' result.txt удалить первую строку из файла example.txt
sed -n '/string1/p' отобразить только строки содержашие "string1"
sed -e 's/ *$//' example.txt удалить пустые символы в в конце каждой строки
sed -e 's/string1//g' example.txt удалить строку "string1" из текста не изменяя всего остального
sed -n '1,8p;5q' example.txt взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n '5p;5q' example.txt вывести пятую строку
sed -e 's/0*/0/g' example.txt заменить последовательность из любого количества нулей одним нулём
cat -n file1 пронумеровать строки при выводе содержимого файла
cat example.txt | awk 'NR%2==1' при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk '{print $1}' вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk '{print $1,$3}' вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2 объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d '+' file1 file2 объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
sort file1 file2 отсортировать содержимое двух файлов
sort file1 file2 | uniq отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1'
comm -2 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2'
comm -3 file1 file2 сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

Преобразование наборов символов и файловых форматов

dos2unix filedos.txt fileunix.txt конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)
unix2dos fileunix.txt filedos.txt конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more вывести список доступных форматов

Анализ файловых систем

badblocks -v /dev/hda1 проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1 проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1 проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck /dev/hda1
e2fsck -j /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1 проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1 проверить/восстановить целостность файловой системы fat раздела hda11
fsck.msdos /dev/hda1
dosfsck /dev/hda1

Форматирование файловых систем

mkfs /dev/hda1 создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1 создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1 создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1 создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0 форматирование флоппи-диска без проверки
mkswap /dev/hda3 создание swap-пространства на разделе hda3

swap-пространство

mkswap /dev/hda3 создание swap-пространства на разделе hda3
swapon /dev/hda3 активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3 активировать swap-пространства, расположенные на разделах hda2 и hdb3

Создание резервных копий (backup)

dump -0aj -f /tmp/home0.bak /home создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak восстановить из резервной копии /tmp/home0.bak
rsync -rogpav --delete /home /tmp синхронизировать /tmp с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_addr:/home/public /home/local синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_addr:/home/public синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' сделать "слепок" локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user создать инкрементальную резервную копию директории '/home/user' в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf - . | (cd /tmp/backup ; tar xf - ) копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents поиск в /home/user1 всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 восстановить MBR с флоппи-диска на /dev/hda

CDROM

cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force clean a rewritable cdrom
mkisofs /dev/cdrom > cd.iso create an iso image of cdrom on disk
mkisofs /dev/cdrom | gzip > cd_iso.gz create a compressed iso image of cdrom on disk
mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd create an iso image of a directory
cdrecord -v dev=/dev/cdrom cd.iso burn an ISO image
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - burn a compressed ISO image
mount -o loop cd.iso /mnt/iso mount an ISO image
cd-paranoia -B rip audio tracks from a CD to wav files
cd-paranoia -- "-3" rip first three audio tracks from a CD to wav files
cdrecord --scanbus scan bus to identify the channel scsi

Сеть (LAN и WiFi)

ifconfig eth0 показать конфигурацию сетевого интерфейса eth0
ifup eth0 активировать (поднять) интерфейс eth0
ifdown eth0 деактивировать (опустить) интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 выставить интерфейсу eth0 ip-адрес и маску подсети
ifconfig eth0 promisc перевести интерфейс eth0 в promiscuous-режим для "отлова" пакетов (sniffing)
ifconfig eth0 -promisc отключить promiscuous-режим на интерфейсе eth0
dhclient eth0 активировать интерфейс eth0 в dhcp-режиме.
route -n вывести локальную таблицу маршрутизации
netstat -rn route add -net 0/0 gw IP_Gateway задать ip-адрес шлюза по умолчанию (default gateway)
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1
route del 0/0 gw IP_gateway удалить ip-адрес шлюза по умолчанию (default gateway)
echo "1" > /proc/sys/net/ipv4/ip_forward разрешить пересылку пакетов (forwarding) hostname отобразить имя компьютера
host http://www.linuxguide.it разрешить имя http://www.linuxguide.it хоста в ip-адрес и наоборот
host 62.149.140.85
ip link show отобразить состояние всех интерфейсов
mii-tool eth0 отобразить статус и тип соединения для интерфейса eth0
ethtool eth0 отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, обеспечивающих эти соединения
netstat -tupln отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID'ы и имена процессов, слушающих порты
tcpdump tcp port 80 отобразить весь трафик на TCP-порт 80 (обычно - HTTP)
iwlist scan просканировать эфир на предмет, доступности беспроводных точек доступа
iwconfig eth1 показать конфигурацию беспроводного сетевого интерфейса eth1

Microsoft Windows networks(SAMBA)

nbtscan ip_addr разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.
nmblookup -A ip_addr
smbclient -L ip_addr/hostname отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://ip_addr/share подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему

IPTABLES (firewall)

iptables -t filter -nL отобразить все цепочки правил
iptables -nL
iptables -t nat -L отобразить все цепочки правил в NAT-таблице
iptables -t filter -F очистить все цепочки правил в filter-таблице
iptables -F
iptables -t nat -F очистить все цепочки правил в NAT-таблице
iptables -t filter -X удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT позволить входящее подключение telnet'ом
iptables -t filter -A OUTPUT -p tcp --dport http -j DROP блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT позволить "прокидывать" (forward)

POP3-соединения

iptables -t filter -A INPUT -j LOG --log-prefix "DROP INPUT" включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22 перенаправление пакетов, адресованных одному хосту, на другой хост

Мониторинг и отладка

top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
ps -e -o pid,args --forest вывести PID'ы и процессы в виде дерева
pstree отобразить дерево процессов
kill -9 98989 "убить" процесс с PID 98989 "на смерть" (без соблюдения целостности данных) kill -KILL 98989
kill -TERM 98989 Корректно завершить процесс с PID 98989
kill -1 98989 заставить процесс с PID 98989 перепрочитать файл конфигурации
kill -HUP 98989
lsof -p 98989 отобразить список файлов, открытых процессом с PID 98989
lsof /home/user1 отобразить список открытых файлов из директории /home/user1
strace -c ls >/dev/null вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls >/dev/null вывести вызовы бибилотек
watch -n1 'cat /proc/interrupts' отображать прерывания в режиме реального времени
last reboot отобразить историю перезагрузок системы
last user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
lsmod вывести загруженные модули ядра
free -m показать состояние оперативной памяти в мегабайтах
smartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMART
smartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hda
tail /var/log/dmesg вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages вывести десять последних записей из системного журнала

Другие полезные команды

apropos ...keyword выводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
man ping вызов руководства по работе с программой, в данном случае, - ping
whatis ...keyword отображает описание действий указанной программы
mkbootdisk --device /dev/fd0 `uname -r` создаёт загрузочный флоппи-диск
gpg -c file1 шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpg дешифрует файл file1 с помощью GNU Privacy Guard
wget -r http://www.example.com загружает рекурсивно содержимое сайта http://www.example.com
wget -c http://www.example.com/file.iso загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствии
echo 'wget -c http://www.example.com/files.iso' | at 09:00 начать закачку в указанное время
ldd /usr/bin/ssh вывести список библиотек, необходимых для работы ssh
alias hh='history' назначить алиас hh команде history

четверг, 20 декабря 2012 г.

Как ElementaryOS сделать пригодной для комфортной работы?

   

Многие пользователи Ubuntu в поисках более “привычного” и удобного для себя дистрибутива устанавливают операционную систему ElementaryOS, которая основана на Ubuntu. Последняя версия ElementaryOS называется Jupiter и основана на Ubuntu 10.10. Сборка ElementaryOS отличается от оригинального дистрибутива Ubuntu в “лучшую” сторону, что способствует увеличению количества пользователей этой ОС.

Но есть в этой операционной системе некоторые нюансы, о которых хотелось бы поговорить отдельно и о возможности их устранения.
Если вы еше не попробовали операционную систему ElementaryOS, то можете загрузить ее с официального сайта проекта Elementaryos.org

Вот чего “на первый” взгляд не хватает ElementaryOS Jupiter:

    Автоскрытие дока
    Добавление в док своих кнопок запуска
    Размещение пользовательской информации на рабочем столе


Как оказалось, это все решается довольно просто и быстро. После этого эта операционная система становиться “лакомым кусочком” для делового человека, которому нужна “привычность” и производительность.
Сразу же после установки операционной системы ElementaryOS док выглядит мягко говоря ужасно и чем меньше у вас разрешение экрана, тем ужаснее он становится.

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



 Далее в графе Скрытие: ставим Интелектуальное скрытие.

После этих манипуляций док будет исчезать, если активное окно “заходит” на его границы. Если активное окно никак не пересекается с ним, то док будет отображаться на рабочем столе. Для быстрого доступа к доку при полноэкранном активном окне, необходимо подвести курсор мыши к нижней границе экрана и док автоматически появиться поверх всех окон.

Теперь можно запросто прочитать на маленьком экране нетбука долгожданный обзор планшетного компьютера Apple New iPad, который так много наделал в мире шуму.


Добавление в док своих кнопок запуска

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

Для того, чтобы добавить значок, скажем, браузера Google Chrome, вам необходимо запустить его, на появившемся значке в доке щелкнуть правой кнопкой мыши и в контекстном меню выбрать пункт Прикрепить к панели.

Более подробнее показано на ихображении ниже:

 Размещение пользовательской информации на рабочем столе

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

Для того, чтобы вернуть эту возможность нам необходимо выполнить две команды:


gconftool-2 --type bool --set /apps/nautilus/preferences/desktop_is_home_dir false
gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop true


После всего этого операционная система ElementaryOS может стать одной из самых приемлемых ОС для пользователей, которым просто требуется быстрый и удобный инструмент для их повседневной работы. ElementaryOS – это именно такая операционная система.

вторник, 18 декабря 2012 г.

Установка Ubuntu-Tweak 0.8.1 в Ubuntu 12.10/12.04/11.10/Linux Mint (новый релиз)



Основные возможности

Программа обладает следующим набором функций:
  • Показ основной системной информации (дистрибутив, ядро, процессор, память и т. д.).
  • Настройка Unity, Unity launcher, Dash.
  • Настройка Nautilus, сценарии и шаблоны документов для контекстного меню.
  • Настройка Compiz, углов экрана, оконных эффектов, эффектов меню.
  • Тонкая настройка стиля и поведения оконного менеджера Metacity.
  • Установка клавиатурных сокращений для быстрого доступа к любимым приложениям.
  • Быстрая установка популярных приложений.
  • Множество сторонних источников для обновления приложений.
  • Удаление ненужных пакетов или очистка кэша для освобождения дискового пространства.
  • Настройка оформления системы и выбор звуковых тем.
  • Исправление оформления для программ запущеных от имени администратора.
  • Настройка оформления экрана для входа в систему.
  • Показ/скрытие и изменение иконок рабочего стола и подключенных устройств.
  • Показ/скрытие/переименование иконок «Компьютер», «Домашний каталог», «Корзина» или «Сеть».
  • Резервное копирование личных данных.
  • Настройка ассоциаций файлов (через какую программу открывать тот или иной формат файла).


Установка Ubuntu-Tweak 0.8.1

  • sudo add-apt-repository ppa:tualatrix/ppa 
  • sudo apt-get update
  • sudo apt-get install ubuntu-tweak

четверг, 6 декабря 2012 г.

Некоторые замечания о сборке ядра Linux: как собрать ядро в Линукс


Если вы столкнулись с необходимостью собрать ядро Linux, наложить патч для ядра Линукс или просто вы уже забыли, как это делается - здесь приводятся рекомендации и ссылки для "быстрого старта".


Зачем собирать ядро Linux?
Если всё работает, цветёт и пахнет - не трогайте ничего! Есть старая поговорка "не сломалось - не чини!", в ней мудрость многих поколений пользователей UNIX, бессонные ночи и море слёз. Ну так зачем же это надо?

Как говорят классики, полезно пересобрать ядро в следующих случаях:
  • чтобы задействовать свойства, которых нет в поставляемых сборках ядра (например, поддержка памяти больше 1Гб, сжатыхфайловых систем или других интересных возможностей);
  • создания монолитного ядра, без модулей (бывает необходимо при создании специфичных систем, например LiveCD);
  • для установки обновлённого ядра, в котором есть необходимые свойства или поддержка вашего оборудования;
  • чтобы больше узнать о ядрах Linux.
Не бойтесь пересобирать ядро Линукс. Это забавно и полезно. И никакой чёрной магии в этом нет.


Как собрать или пересобрать ядро Линукс?
Вы хорошо подумали, взвесили все "за" и "против" и решились-таки на этот шаг. Это не так сложно, как может показаться, процесс автоматизирован и упрощён до известных пределов. Я поделюсь некоторыми очевидными (для тех, кто уже наступал на грабли) или не очень (кто их удачно обошёл) подводными камнями, подстерегающими вас на этом пути.
Прежде всего, заполучите статью "Ставим ядро 2.6, или Ядерная физика для домохозяйки" (тут - новая версия этой статьи). Не надо оскорбляться таким названием - это исчерпывающая статья по сборке ядра, её автор, Михаил Зарипов, перевёл на русский почти все опции ядра!

Статья построена из расчёта, что человек использует make menuconfig и некоторых параметров вы в ней не найдёте, но основное в ней отражено. Качаем, читаем и следуем приведённым в ней рецептам - это 99% даст положительный результат.

Как узнать Linux версию ядрa?Для этого в консоли от простого пользователя пишем:
uname -a
в ответ получаем что-то вроде:
Linux dot 2.6.33.1 #1 SMP PREEMPT Fri Mar 26 09:54:11 EST 2010 i686 GNU/Linux
Красным выделена версия ядра - 2.6.33.1 так что теперь можно ориентироваться в том, какая версия ядра на сайте kernel.org для вас более свежая.
Какие бывают ядра Линукс?Вот здесь об этом здесь много и долго говорилось. Кратко: идём в архив официальной серии ядер, выпускаемых непосредственно Линусом Торвальдсом. Прежде всего, надо разобраться, что такое стабильные и нестабильные ядра (stable и development) и как они нумеруются. Пусть имеется ядро версии a.b.c.d
  • a - это основной номер версии. Меняется он раз в несколько лет, как правило, когда нестабильная серия с очень существенными изменениями становится стабильной.
  • b - это patchlevel. Именно он определяет, является ли данное ядро стабильным или нет. Если он четный - ядро стабильное, если нечетный - нестабильное. Числа a и b в виде a.b называется серией ядер.
  • с - это sublevel. Он определяет номер ядра в серии, отличия не радикальные, но существенные: появились новые драйвера, устранены ошибки, добавлены новые возможности.
  • d - это extraversion устраняются мелкие баги.
Официальные ядра в виде исходных текстов можно скачать сftp://ftp.kernel.org. Идём туда и видим кучу ядер. Нам какое? Есть несколько соображений:
  • берём то, которое посвежее: и оборудования побольше поддерживается, и старых глюков меньше;
  • лучше всего брать ядро с последним номером в серии, то есть ядро с максимальным номером d: например, 2.6.15.7 (а дальше идут уже 2.6.16);
  • погуглить на тему проблем в ядре a.b.c.d которое вы выбрали - вдруг там что-то нужное вам временно поломали.

Какие могут быть проблемы при сборке ядра?

Проблем при сборке обычно не бывает, только если вы не намудрили с компилятором или недоустановили его. В процессе сборки проблем не так много, они обычно возникают после сборки ядра по следующим причинам:
  • вы не включили в ядро то, что очень нужно, и теперь
  1. система не загружается;
  2. пропала возможность работы с некоторым оборудованием;
  • вы включили в ядро то, что не надо (особенно с надписью EXPERIMENTAL) и теперь
  1. система работает нестабильно или очень медленно;
  2. ядро вываливается в kernel panic;
  • вы взяли нестабильное ядро и/или компилятор в бета-версии/выставили дикие флаги оптимизации
  1. вас предупреждали
На эти грабли можно и не наступать - есть несколько рекомендаций.


С чего начать?
С того, что к сборке ядра нужно подготовиться: это займёт много времени, особенно если вы это делаете в первый раз. У меня пересборка первого ядра заняла 4 часа - вдумчивое чтение статьи, поиск параметра, включение или выключение и так далее. У вас это может занять времени меньше - затем я это и пишу.
Хорошо бы взять конфиг из вашего дистрибутива - дистростроители в сборке ядер понимают, как правило, больше вас, так что не стесняйтесь. Копируем в каталог с ядром и пишем
make oldconfig
Флажки параметров ядра должны расставиться соответствующем конфигу образом, если только в вашем дистрибутиве не принято накладывать на ядро 33 заплатки. Конфиг так же можно попросить у ближайшего линуксоида - будет кого пинать и доставать своими вопросами. Если охота проявить творчество, можно попросить создать конфиг с умолчальными настройками:
make defaultconfig
Не увлекайтесь заплатками, особенно поначалу. Каждая из них добавляет возможности в ядро, но может привести к дестабилизации системы и крайне неприятным последствиям. Обзор различных интересных патчей и веток ядер Линукс дан в этой прекрасной статье.

Где лежат большие грабли
Как и всё остальное в Линукс, тексты ядра прокомментированы и можно в процессе сборки попросить помощи. В menuconfig это крайняя правая кнопка HELP. Комментарии есть практически к каждой опции, более или менее внятные, и их стоит почитать, если из статьи не ясно, что это такое.

Перво-наперво,
 не включайте в ядро и не делайте модулем никаких функций, рядом с которыми написано слово 
EXPERIMENTAL или DEPRECATED! 
Это может вывести систему из стабильного состояния и добавить вам совершенно ненужных проблем - включайте только в том случае, если это очень необходимо и вы знаете, что делаете.

Чтобы система после перезагрузке загрузилась с новым ядром, обязательно включите поддержку следующих опциймонолитно:
  • файловой системы, которую вы используете на системном диске;
  • файловых систем initramfs и cramfs в меню Device drivers --- Block devices, иначе система не сможет считать стартовый образ ядра;
  • поддержку вашего дискового контроллера в Device drivers ---ATA/ATAPI/MFM/RLL support

Чтобы не ломать голову и не думать, почему не работает что-то, имейте в виду:
  • То, что может быть будет подключаться к системе, полезно сделать модулем, то, чем будете пользоваться постоянно - лучше монолитно (об исключениях - ниже).
  • Драйвера для звуковых карт включаются модульно в меню Device drivers --- Sound --- Advanced Linux Sound Architecture --- чтобы потом их проще было конфигурировать (если для этого нет крайней необходимости, не пользуйтесь OSS).
  • Если в системе есть SATA-диски, планируется подключать флешки и писать CD или DVD-диски - не выключайте поддержку SCSI в меню Device drivers --- SCSI device support, так как очень многое в Линукс работает "как протокол поверх SCSI".
  • Если вы планируете пользоваться кардридером, обязательновключите опцию Device drivers --- SCSI device support --- Probe all LUNs on each SCSI device, иначе будете видеть только первый слот. 
  • Файловые системы, которые планируется использовать редко, сделайте модулем. Обязательно включите поддержку петлевого устройства в Device drivers --- Block devices --- Loopback device support, иначе не сможете монтировать образы дисков.
  • Корневую файловую систему включайте монолитно в ядро - иначе система не сможет загрузиться.
  • Будьте внимательны, если используете ReiserFS и не включайте все флажки под ним подряд (лучше вообще никаких не ключайте): один из них (указанный здесь пустым) File systems --- Reiserfs support [ ] Enable reiserfs debug mode приводит к замедлениюфайловой системы и в логах постоянно будет появляться "WARNING! Using reiserfs in slow mode for debugging" или что-то в этом духе. Не включайте этот флажок!
  • В меню Block layer --- IO Schedulers отмечайте ДА на все планировщики ввода-вывода, потом можно будет на лету их менять (по ситуации).
  • Для ноутбуков я бы советовал включать шину ISA в меню Bus options, так как некоторые встроенные устройства прикрепляются именно к ней.
  • Включите поддержку вашей сетевой карты модулем в меню Device drivers --- Network device support --- Device drivers --- Ethernet (10 or 100Mbit) ---
  • Если хочется мониторинг железа, включаем всё модулями в Device drivers --- Hardware Monitoring support --- и сверяемся ещё раз спостом.
  • Не забываем включить поддержку USB и поддержку нужных флешек в Device drivers --- USB support --- USB Mass Storage support
  • Так же стоит сразу включить поддержку оперативной памяти более 1Гб отметив Processor type and features --- High Memory Support (off) --- 4Gb
Далее для сборки набираем:
от простого пользователя:
make bzImage
(собрать ядро)
make modules
(собрать модули
от пользователя root:
make modules_install
(установить модули)
make install
(установить ядро)

После того, как ядро собрано, следует создать загрузочный образ (в Дебиане это применяется). Для этого нужно выполнить либо

mkinitramfs -o /boot/initrd-вашаверсияядра вашаверсияядра
либо (для старых или специфических дистрибутивов)
mkinitrd -o /boot/initrd-вашаверсияядра вашаверсияядра
То есть например:
mkinitramfs -o /boot/initrd-2.6.20 2.6.20
После этого прописываем в загрузчике (скорее всего это будет GRUB):
title Debian Linux (2.6.20)
root (hd0,0)
kernel /vmlinuz-2.6.20 ro root=/dev/sda1
initrd /initrd-2.6.20.img
Номер системы, загружаемой по умолчанию, равен 0. Чтобы определить по умолчанию загрузку вашего нового ядра, либо поместите описывающий его раздел файла, в начало, либо измените номер системы по умолчанию на нужный вам (помните, что номера начинаются с 0) Если вы используете GRUB, после редактирования файла конфигурации вам не нужно выполнять какие-либо команды.
Вот все грабли, на которые я наступал и которые вспомнил. Уважаемые комментаторы приглашаются к конструктивной критике и дополнению вышеописанных подводных камней.

Ссылки
Собственно, они в основном приведены в теле документа, но всё-таки. О сборке ядер "по технологии Дебиан" говорится здесь. Восхитительная статья по сборке ядер 2.6 тут (а тут её обновление). Замечательный обзор того, какие ядра Линукс, кроме канонической ветки Линуса Торвальдса, есть здесь. Тут можно посмотреть ещё некоторые полезные замечания по сборке ядра.

Уважаемые комментаторы накопали ещё несколько очень полезных ссылок. Вот здесь говорится о сборке ядра для Убунты, а тут - для Дебиана на английском. Может, кому поможет.

вторник, 4 декабря 2012 г.

Скрытый канал поверх ICMP

Скрытый канал поверх ICMP (ICMP-туннель) устанавливает скрытое соединение между двумя компьютерами с помощью пакетов эхо-запроса и эхо-ответа протокола ICMP. Данная техника позволяет, например, полностью туннелировать TCP-трафик через эхо-запросы и ответы (ping).

Автор: Debasish Mandal

Введение и обзор

Скрытый канал поверх ICMP (ICMP-туннель) устанавливает скрытое соединение между двумя компьютерами с помощью пакетов эхо-запроса и эхо-ответа протокола ICMP. Данная техника позволяет, например, полностью туннелировать TCP-трафик через эхо-запросы и ответы (ping). Технически туннелирование через скрытый канал ICMP происходит посредством внедрения любых нужных данных в эхо-пакет и его пересылки на удаленный компьютер. Удаленный компьютер отвечает подобным образом, внедряя ответ в другой ICMP-пакет и отсылая этот пакет назад.

Некоторые ключевые моменты, касающиеся ICMP
В ICMP нет портов

Мы не можем пинговать порты. Когда кто-нибудь говорит о “пинге порта”, он на самом деле говорит об использовании протокола четвертого уровня (вроде TCP или UDP), чтобы выяснить, открыт ли порт. Если кто-либо пингует порт 80, это обычно значит, что он посылает на данную систему SYN-пакет по протоколу TCP. Настоящий ping работает через протокол ICMP, который не использует порты вовсе.

ICMP работает на третьем уровне.

Хотя ICMP находится “над” IP в стеке протоколов, он не является протоколом 4 уровня (считается еще одним протоколом третьего уровня).

На сетевом уровне пакеты маршрутизируются на основании уникального сетевого адреса. Маршрутизатор работает как отделение почты, и сетевой уровень штампует письма (данные) для передачи в определенном направлении. На сетевом уровне работают следующие протоколы: IP, ICMP, ARP, RIP, OSI, IPX и OSPF, а также следующие устройства: маршрутизатор, мост-маршрутизатор, коммутаторы Frame Relay и ATM.

Некоторые ключевые моменты, касающиеся файрволов

Файрволы работают на разных уровнях, чтобы иметь возможность применять различные критерии для ограничения трафика. Самый низкий уровень работы файрвола – третий. В модели OSI он называется сетевым. В стеке TCP/IP это уровень протокола межсетевого взаимодействия (Internet Protocol). Данный уровень занимается маршрутизированием пакетов к месту их назначения. На третьем уровне файрвол может определить, пришел ли пакет из надежного источника, но не может сказать, что он содержит и с какими другими пакетами связан. Файрволы, которые оперируют на транспортном уровне, знают о пакете немного больше и могут разрешить или запретить доступ на основе более сложных критериев. На прикладном уровне файрволы владеют большим количеством информации о том, что происходит, и могут быть очень избирательны в предоставлении доступа.

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

Использование скрытого ICMP-канала

ICMP-туннелирование можно использовать для обхода правил файрвола путем обфускации основного трафика. В зависимости от реализации ПО для ICMP-туннелирования этот тип соединения можно отнести и к категории зашифрованных соединений между двумя компьютерами. Без глубокого исследования пакетов или просмотра системных журналов сетевые администраторы не смогут обнаружить этот тип трафика в своей сети.

Внутри ICMP-пакета

Чтобы увидеть содержимое ICMP-пакета, мы будем посылать запросы на удаленный хост и прослушивать сетевой трафик.

Давайте взглянем на обычный ping.

Здесь мы посылаем обычные эхо-запросы протокола ICMP на удаленный хост 192.168.157.1.

Захватив трафик с помощью Wireshark, мы увидим следующее:

Поскольку мы использовали стандартную утилиту ping без опций, мы послали несколько последовательных ICMP-запросов к хосту. Это несколько затруднит нам анализ трафика. Поэтому давайте пошлем одиночный ICMP-пакет без нагрузки.

Для этой цели можно использовать следующую команду.

ping –c 1 –s 0

Теперь анализировать трафик будет проще.

В сниффере на удаленном хосте мы можем видеть, что получено 42 байта данных.

Типичная структура ICMP-пакета представлена на рисунке ниже.

Рисунок 1

Типичная структура ICMP-заголовка:

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

Вы можете увидеть, что первые 12 байт Ethernet-заголовка представляют собой ничто иное, как MAC-адреса источника и назначения.

Следующие 20 байт полученной датаграммы – IP-заголовок (см. рисунок 1).

Структура IP-заголовка, представленная более подробно.

Далее следуют 8 байт ICMP-заголовка:

Структура ICMP-заголовка, представленная более подробно.

См. также рисунок 2.

Утилита ping, присутствующая в обычных Linux-системах, позволяет нам контролировать количество пакетов, их размер, но не позволяет сформировать эхо-запрос специального вида. Поскольку главной нашей целью является манипулирование данными в содержимом ICMP-пакета, использование стандартной утилиты ping – не лучший вариант.

HPING2

Hping – свободный генератор и анализатор пакетов для TCP/IP протоколов, распространяемый Salvatore Sanfilippo (также известным как Antirez). С помощью hping мы также можем манипулировать порцией данных одиночного ICMP-пакета. Используя hping, мы снова пошлем одиночный ICMP-пакет, но на этот раз добавим в него немного мусора.

На скриншоте можно заметить, что мы добавили в пакет 4 символа “A” и послали его на адрес 192.168.157.1.

Давайте прослушаем и проанализируем трафик.

Теперь вы можете видеть, что мы захватили 46(42+4) байтов данных. На скриншоте легко различить нашу нагрузку, состоящую из подсвеченных "41". Это hex-представление символа “A”.

PING своими руками: жизнь коротка, поэтому я предпочитаю Питон.

В вышеприведенных примерах мы использовали для посылки ICMP эхо-запросов на любой хост стандартную утилиту ping и утилиту hping. Теперь мы используем Питон для отсылки самодельного ICMP-пакета.

В данном случае мы формируем не только заголовок ICMP и начинку пакета, но и заголовки протоколов Ethernet и IP.

Переменная “dump” в вышеприведенном скрипте содержит всю датаграмму целиком, включая Ethernet-заголовок, IP-заголовок, ICMP-заголовок и начинку. Здесь в качестве начинки выступают четыре символа “A” (\x41\x 41\x 41\x 41).

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

Собираем все вместе

Чтобы осуществить это, нам нужно программно реализовать следующие действия:

  1. Демон просматривает ICMP-пакеты
  2. После получения пакета производится извлечение его начинки (корректного запроса со стороны атакующего)
  3. На основании начинки делаются необходимые действия
  4. Отсылается обратный ICMP-пакет с ответом

Я написал на Питоне простой сервер и клиент для ICMP-туннелирования, которые позволяют устанавливать скрытый канал между двумя хостами.

Код сервера:

http://pastebin.com/JLD6grb2

Код клиента:

http://pastebin.com/gH3zzHdQ

Данный демон скрытого канала по сути получает команды ОС из ICMP-пакетов и запускает эти команды на удаленном хосте, посылая ответные ICMP-пакеты с результатами выполнения команд. Как только демон запускается на хосте, он начинает прослушивать ICMP-пакеты. После получения команд с клиента он извлекает начинку из пакетов и запускает команду на своем хосте, посылая назад ICMP-пакет с результатом. Если вывод команды слишком длинный, демон пошлет его в нескольких пакетах.

Сниффер клиентской части получает ответные пакеты и извлекает вывод команды из начинки. После разбора он отображает вывод. Утилита Hping также может быть использована как клиент для данного демона. В этом случае начинку следует формировать по определенному шаблону так, чтобы демон смог распознать запрос. Тогда для разбора ответа следует использовать клиентский скрипт, либо Wireshark.

Видеодемонстрация данного скрытого канала:

http://www.youtube.com/watch?v=ADHtjwwkErI

Несколько других хорошо известных утилит для создания скрытых каналов:
LOKI

LOKI – программа для туннелирования информации. В качестве носителей полезной нагрузки она использует пакеты эхо-ответа.

NCovert

Производит скрытую передачу файлов за счет сокрытия передаваемых файлов в безвредных на вид данных с помощью подделки пакетов. В некоторых случаях позволяет спрятать реальный IP-адрес пользователей.

007 Shell

007 Shell – простая клиент-серверная программа, написанная на C, для удаленного администрирования системы по сети с помощью техник, схожих с теми, что использует Loki. Команды и ответные сообщения инкапсулируются в полезную нагрузку пакетов ICMP ECHO_REPLY (пакеты эхо-ответа).

ICMPTX (IP-over-ICMP):

ICMPTX – программа, позволяющая пользователю с правами root создавать виртуальное сетевое соединение между двумя компьютерами, скрывая данные внутри ICMP-пакетов.

Способы борьбы

Попытка предотвращения скрытых каналов напоминает преследование кошки собакой. Вы можете предотвратить определенные каналы, только если осведомлены о них, можете анализировать генерируемый ими трафик и затем соответствующим образом настраивать вашу IDS (например, прописать правила Snort). Тем не менее, когда скрытые каналы генерируют разный трафик с каждым пакетом (например, с помощью bit-flipping) или используют продвинутые техники тайминга, предотвратить их становится невозможно.

Хотя единственным способом предотвращения туннелирования такого типа является полное блокирование ICMP-трафика, это неосуществимо для производственных сред из реального мира. Один из методов борьбы с данным видом атак заключается в пропускании через файрвол ICMP-пакетов лишь фиксированного размера, чтобы практически исключить данный тип поведения. IDS может считать большие ICMP-пакеты подозрительными и поднимать тревогу. Тем не менее, поскольку существуют легальные способы использования больших ICMP-пакетов, сложно определить, является ли большой ICMP-пакет вредоносным на самом деле. Например, большие ICMP-пакеты используются для проверки возможности передачи больших пакетов по сети. Отличить легальные пакеты от негальных еще сложнее, если скрытый канал шифруется. IDS должна уметь определять, зашифрован ли пакет. Различение зашифрованных от незашифрованных пакетов все еще остается открытой для иследований проблемой.

Snort предоставляет одно или два правила, которые могут помочь в обнаружении скрытых ICMP-каналов. Другая возможность – обнаруживать бит "Dont Fragment" в скрытом канале и так далее. Это простые примеры. Тем не менее, snort не предоставляет таких правил непосредственно, и кому-то нужно подстраивать их под себя. Кроме того, существуют некоторые умные скрытые каналы, которые очень сложно обнаружить (например, скрытый канал ISN или скрытый канал на основе временных задержек).

понедельник, 3 декабря 2012 г.

Сброс пароля root в MySQL

Для восстановления пароля root в MySQL необходимо проделать ряд перечисленных ниже действий. Для их выполнения понадобится доступ к серверу с правами на запуск и остановку сервисов MySQL.
Данный порядок восстановления протестирован на ОС Linux Ubuntu 10.04 LTS. Для других систем необходимо провести соответствующие корректировки выполняемых команд, однако восстановление пароля происходит по аналогичной схеме.
  1. Остановить сервис MySQL
    sudo /etc/init.d/mysql stop
  2. Запустить MySQL в безопасном режиме с перечисленными ниже ключами
    sudo /usr/bin/mysqld_safe --skip-grant-tables --user=root &
  3. Зайти в консоль MySQL от имени пользователя root (без пароля)
    mysql -u root
  4. Установить новый пароль для пользователя root
    UPDATE mysql.user SET Password=PASSWORD('новый_пароль') WHERE User='root';
    FLUSH PRIVILEGES;
  5. Перезапустить сервис MySQL для функционирования в штатном режиме.
    sudo /etc/init.d/mysql restart

Создание образа жесткого диска при помощи утилиты dd в Unix

Для создания образа жесткого диск не обязательно использовать утилиты на подобии Acronis True Image или Norton Ghost, достаточно простой утилиты dd, которая входит в состав большинства Unix-подобных операционных систем (Linux, FreeBSD, Solaris и т.д.)
В статье рассмотрен простой способ создания резервной копии образа жесткого диска при помощи dd.
Первым делом необходимо подготовиться к резервному копированию. В данной статье введем следующие обозначения:
  • /dev/sda - диск, образ которого необходимо создать;
  • /dev/sdb - диск на который будет записан образ.
При необходимости нужно подставить собственные значения.

Подготовка к созданию образа жесткого диска

Первым делом необходимо загрузиться с любого доступного Live-CD диска, имеющего утилиту dd, и войти в командную строку в качестве суперпользователя.
Создаем точку монтирования для проведения резервного копирования.
mkdir /mnt/backup
Монтируем жесткий диск на который необходимо сохранить образ.
mount /dev/sdb1

Создание образа жесткого диска

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror
  • if=/dev/sda - копируем весь жесткий диск sda;
  • of=/mnt/backup/sda.img - копируем в /mnt/backup/sda.img;
  • bs=8M - задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт);
  • conv=sync,noerror - указываем dd на необходимость копирования по типу бит-в-бит с игнорированием ошибок чтения.
Для сокращения размера образа жесткого диска его можно сжать любым архиватором.
dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img

Восстановление образа жесткого диска

Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа.
dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror
При использовании сжатия параллельно необходимо разархивировать образ.
gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M

Миграция системы на другой жесткий диск

Для миграции всей системы на другой жесткий диск необходимо, в качестве цели назначения задать расположение нового диска.
dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror
После чего при необходимости устанавливаем загрузку с данного жесткого диска. При условии, что новый жесткий диск больше старого, на нем останется неразмеченная область. Ее следует разметить и отформатировать согласно имеющимся требованиям.

Статистика копирования в dd

Главный минус в dd — это отсутствие наглядного представления статистики выполнения процедуры копирования. Однако этот минус можно легко обойти.
Достаточно подключиться к другому терминалу.
Alt+Ctrl+F2
Определить номер процесса, под которым запущена dd.
pgrep -l '^dd$'
Периодически посылать данному процессу команду kill -USR1 номер_процесса_dd.
watch -n 5 kill -USR1 номер_процесса_dd
  • watch -n 5 - выполнять команду каждые 5 секунд;
  • kill -USR1 номер_процесса_dd - показать статистику копирования.

iptstate, pktstat – сетевая статистика



iptstate, pktstat – сетевая статистика.
Сегодня я покажу вам два инструмента, которые используются в терминале для мониторинга сети и активных подключений: iptstate и pkstat

IPTState

IPTState ‑ это top-подобный интерфейс таблицы отслеживания подключений netfilter.
Используя iptstate, вы может в интерактивном режиме посмотреть, как трафик проходит через брандмауэр netfilter/iptables, произвести сортировку по различным критериям, отфильтровать по различным критериям. Но это еще не все: начиная с версии 2.2.0, вы можете даже удалять статистику из таблицы!
Единственное требование – это библиотека curses (как правило, ncurses) и libnetfilter_conntrack версии 0.0.50 или более позднее версии.
iptstate показывает информацию, содержащуюся в таблице статистики IP Tablesв режиме реального времени в формате типа top. Полученные данные можно отсортировать по любому полю. Пользователю нужно только распечатать полученную информацию и выйти, в отличии от других top-подобных систем.
Частота обновления настраивается, IP можно преобразовать в имена, данные можно отформатировать, отфильтровать и одной из возможностей является отображение разных данных разным цветом.
IPTState доступно в Debian, Redhat, Fedora, Mandrake, Gentoo, FloppyFW, и многих других дистрибутивах.

Pktstat

pktstat показывает в реальном времени список активных подключений к сетевому интерфейс, а также ширину используемого канала. Частично декодируются протоколы HTTP и FTP, чтобы показать какие файлы передаются. Также показываются названия приложений X11.
Чтобы запустить pktstat используйте следующую команду (под root или через sudo):
pktstat -i eth0
Разумеется, под eth0 подразумевается ethernet-интерфейс сетевой карты, который необходимо надлюдать.
iptstate, pktstat – сетевая статистика.

Утилиты Linux для анализа производительности

Такие утилиты как top или vmstat знакомы даже малоопытным пользователям. Без труда с их помощью можно решать многие проблемы с производительностью приложений на платформе Linux/UNIX. И чаще всего это касается уже традиционных веб-приложений на основе LAMP стэка.
Однако для специалистов более высокого уровня данных утилит явно недостаточно. Проблемы с быстродействием приложений не всегда отличаются очевидностью и простотой, а потому вполне уместно рассмотреть наиболее важные средства для анализа производительности.
htop
htop представляет собой довольно мощную альтернативу стандартной утилите top. Отличается он в первую очередь более удобным интерфейсом и возможностью быстро настроить отображение информации о системных ресурсах.
С точки зрения мониторинга процессов все также реализовано на высоком уровне. htop выводит в режим реального времени данные по использованию процессора и памяти, а также другие системные метрики (всего их доступно более 50) для каждого активного процесса и потока. В отличии от top предусмотрена возможность вертикального и горизонтального скроллинга, а значит ничто не ускользнёт от вашего внимания.
Пример работы утилиты htop
Также с помощью htop можно, например, изменить приоритет процесса или вовсе его завершить.
dstat
dstat в свою очередь является улучшенной альтернативой таким утилитам как vmstat или sar, а заодно и таким известным инструментам как iostat и ifstat.
Суть работы dstat — сбор усредненной информации об использовании системных ресурсов с заданным интервалом вывода данных. Среди кандидатов для анализа информация об утилизации процессора, памяти, сети, диска, файлов подкачки и т.д.
Пример работы утилиты dstat
Процесс мониторинга системных ресурсов организован довольно просто и, главное, наглядно. А среди особых возможностей dstat — запись собираемых метрик в CSV файлы, что крайне важно для последующего анализа.
iotop
Безусловно, такие утилиты как iostat являются эффективным решением для анализа дисковой активности. Однако iotop в этом отношении является еще более полезным инструментом.
Пример работы утилиты iotop
iotop позволяет выводить информацию о дисковой активности для каждого потока в системе (или для списка интересующих процессов). Информация может выводиться либо в режиме реального времени, либо в аккумулятивном представлении.
iperf
iperf является одним из самых простых решений для измерения производительности сети между двумя отдельно взятыми узлами.
При этом на одном из узлов iperf запускается в режиме сервера
iperf -s
а на другом в режиме клиента:
iperf -c server_hostname
По умолчанию замер осуществляется на протяжении десяти секунд. С помощью различных опций можно задать отличный от стандартного интервал измерения или альтернативно объем передаваемых данных.
Пример работы утилиты iperf
Наличие различных TCP параметров, а также возможность запуска в UDP-режиме делает iperf исключительно полезным инструментом для анализа сетевых проблем.
mtr
mtr — это бесплатная утилита, одновременно сочетающая в себе возможности программ ping и traceroute.
Пример работы утилиты mtr
В непрерывном режиме mtr выводит информацию о маршруте для заданного имени хоста, а также набор статистических данных о пингах до каждого промежуточного узла. Данный инструмент крайне полезен для диагностики проблем с маршрутизацией или сетевыми задержками.
curl
curl — это, пожалуй, наиболее известный среди рассматриваемых инструментов. Он позволяет загружать данные по одному из 21 поддерживаемых протоколов.
Пример работы утилиты curl
curl можно использовать, например, для анализа ответов веб-серверов или HTTP заголовков. Бесчисленное количество опций в свою очередь позволяют сформировать практически любой запрос.
iptraf
Время от времени приходится сталкиваться с ситуациями, когда приложение устанавливает сетевые соединения, о которых мы даже не подозреваем. Для диагностики подобных ситуаций полезным может стать монитор сетевых соединений — iptraf.
Работать с iptraf можно в четырех режимах:
  • мониторинг IP трафика;
  • общая статистика для всех сетевых интерфейсов;
  • детализированная статистика для отдельного взятого интерфейса;
  • статистические срезы (в зависимости от порта или размера пакетов);
  • LAN мониторинг;
Пример работы утилиты iptraf
Разумеется, ко всему этому прилагается гибкость настройки, сетевые фильтры и возможность запуска в фоновом режиме. В целом, iptraf — это довольно эффективный, но в тоже время простой в использовании инструмент.
Для более серьезного анализа имеет смысл прибегнуть к таким решениями как tcpdump.
httperf
Зачастую анализ проблем с производительностью невозможен без запуска нагрузочных тестов. При этом иногда даже не требуются сложные тесты и детальными сценарии, а достаточно лишь сгенерировать адекватный уровень нагрузки с помощью потока HTTP запросов.
httperf относится к числу подобных консольных генераторов нагрузки. К примеру, следующий вызов:
httperf --server=hostname --rate=10 --num-conns=1000
отправит 1000 запросов к целевому серверу с интенсивностью 10 запросов в секунду. И если поставленной задаче не помешает, к примеру, ограничение пропускной способности сети, то можно будет получить базовую информацию о том, как сервер справился с нагрузкой.
Пример работы утилиты httperf
multitail
Наверняка многим приходилось сталкиваться с использованием утилиты tail в follow формате, при котором в режиме реального времени выводится не только конец файла, но и обновления в нем по мере роста. Но что если требует одновременный просмотр нескольких логов баз данных и веб-серверов?
multitail — идеальное решение для подобных задач. Подобно работе утилиты screen multitail выводит содержимое файлов разбивая терминал на несколько окон (возможна как вертикальная, так и горизонтальная ориентация).
Удобно? А теперь представьте, что все это дополнено следующими возможностями:
  • фильтрация и подсветка информации с использованием регулярных выражений;
  • подавление дублирующих записей;
  • визуальное и звуковое оповещение при появления заданного фрагмента текста;
  • возможность вертикального и горизонтального скроллинга.
И это далеко не полный список возможностей. В любом случае, не лишним будет иметь подобный инструмент на вооружении.

пятница, 28 сентября 2012 г.

Польский скрипт после установки Ubuntu 10.04


Польские пользователи Ubuntu написали скрипт который максимально упрощает настройку Ubuntu . Он сам установит все неоходимое;
* Добавить екстра репозитарии в систему (GetDeb, MediUbuntu и т.п.)
* установит последние версии обновлений
* Ubuntu Tweak
* кодеки, плагины для браузера (Java, Flash)
* архиваторы (RAR, 7-Zip) и шрифты
* если система 64 бит, поставить Flash Player с сайта Adobe
* GIMP ( нет в Ubuntu 10.04 Lucid Lynx)
* VLC
* Установить Thunderbird
* Google Chrome
* VINE
* MPlayer
* установит в Totem и MPlayer кодировку CP1251
*  Pidgin
* примет лицензионное соглашение при установке JAVA
* установит Dropbox, включая репозиатрий
* GNOME-DO
* Skype 32 bit или 64 bit в зависимости от архитектуры
* compizconfig-settings-manager
Ето почти полный список того что что сделает етот скрипт. Также есть графическая оболочка через которую можна выбрать что утановливать
И так чтоб увоспользоватся скриптом в терминале вводим следующие команды;
cd ~
sudo apt-get install zenity
wget http://www.linuxspace.org/wp-content/uploads/2010/script/ubuntu-10.04-start-script_v0.4
chmod +x ubuntu-10.04-start-script_v0.4
sudo ./ubuntu-10.04-start-script_v0.4

Shell команды для удаления ядра

выводит то что ядра которые есть в системе dpkg -l | grep linux-imag

удаляем ядро из системы sudo su -c 'apt-get autoremove linux-image-2.6.28-11-generic&&update-grub'

где linux-image-2.6.28-11-generic  нужное нам ядро 

удачи и не удаляйте то что не нужно !!!