Содержание[убрать] |
Работа в командной строке
Настройка
- ~/.bashrc — Глобальная настройка и запуск программ при первичном входе, и при каждом открытии консоли.
- ~/.bash_profile — Применяется только при входе в систему, автозапуск пользовательских приложений.
- ~/.bash_logout — Выполнение сценариев при выходе.
- echo «alias iconv=’iconv -f cp1251 -t utf8′» >> .bashrc — Назначаем алиасы командам. Теперь можно будет писать просто iconv вместо iconv -f cp1251 -t utf8.
Чтобы единовременно отменить alias (для использования действия команды по умолчанию, например, в скрипте), нужно перед соответствующей командой поставить \. Например, \ls.
Горячие клавиши
- «Esc+.» или «Alt+.» — Вставка последнего аргумента предыдущей(-их, при многократном нажатии) команды (здорово жизнь упрощает).
- «Shift+PgUP» — Просмотреть вывод выходящий за границы экрана.
- «Ctrl+a» — Перейти в начало строки, «Ctrl+e» — перейти в конец.
- «Ctrl+r» или «Ctrl+s» — Поиск по истории, для поиска нажимать несколько раз. «Ctrl+n» — в обратную сторону. Для редактирования — клавиши «Вправо» или «Влево».
- «Ctrl+u» — Вырезает все слева от курсора. Очень удобно!
- «Ctrl+w» — Вырезать текст от курсора до начала слова (пробела). Очень удобно!
- «Alt+Backspace» — Вырезать слово слева от крусора до спецсимвола (удобно в путях, очень!)
- «Ctrl+k» — Вырезать текст от курсора до конца строки.
- «Alt+b» — Переместить курсор назад на одно слово, «Alt+f» — вперёд.
- «Alt+d» — Вырезать текст от курсора до конца слова.
- «Ctrl+y» — Вставить вырезанный текст.
- «Ctrl+l» — Очистить экран.
- «Ctrl+d» — Завершить сессию, тоже самое, что и exit
- «Ctrl+z» — Перевести текущую задачу в фоновый режим и «усыпить». fg x вернуть процесс (где x=1-…), а program & запуск программы в фоновом режиме. А а bg перевести «усыпленную» задачу в фоновй режим, так как если бы мы запустили program &.
- «Ctrl+s» — Приостановить вывод, «Ctrl+q» — возобновить вывод.
Скриптинг
- ‘ — Строгие кавычки, передать неинтерпретируемое значение.
- ` — Обратные кавычки, выполнить содержание скобок. То же, что и $().
- ” — Двойные кавычки, подстановка переменных и предотвращение разбиения на слова.
- ping -с 1 domain.com ; echo «host» — Пропинговать domain.com одним пакетом, затем просто вывести сообщение.
- ping domain.com || echo «bad host» — Пропинговать domain.com, в случае неудачи вывести сообщение.
- ping -с 1 domain.com && echo «ok host» — Пропинговать domain.com, в случае успеха вывести сообщение.
- & — (Амперсанд).
- | — Прямая черта, он же пайп (pipe).
- > — Перенаправить вывод (stdout) в файл.
- >> — Дописать в конец файла.
- 2 > file — Вывод ошибок (stderr) в файл.
- 2>&1 — Вывод ошибок (stderr) туда же куда и стандартный вывод (stdout).
- $! — PID последнего запущенного в фоновом режиме процесса.
- $0 — Наименование текущего сценария.
- $1, $2, $((i)) — Первый, второй и i-тый аргументы, переданные программе. i передаётся, например, как переменная из цикла.
- $@ — Каждый из переданных программе аргументов.
- $((<выражение>)) — Выражение в скобках — вычисляется.
- $# — Число аргументов, передаваемых сценарию.
- $$ — Текущий PID выполняемого сценания.
- $- — Текущие опции интерпретатора, аналогично применению set.
- $? — Код завершения команды. 0 обычно свидетельствует о завершении без ошибок.
- mass=($(while read x ; do echo ${x}; done< file.txt)) — Cоздать массив mass. Элементами будут строки файла file.txt
- func() {<команды>} — Объявление функции. func — Вызов.
- while true; do firefox & wait $!; done — перезапускает процесс firefox сразу после его окончания.
Не забываем про фигурные скобки:
$ ls
file.tmp
$ i=file.tmp
$ mv $i ${i%tmp}test
$ ls
file.test
То же самое:
$ mv file.{tmp,test}
Дальше должно быть понятно:
${var%ending-to-remove}newending ${var/find/replace} ${var//find/replace-all} ${var#prefix-to-remove}
Калькуляторы
- let «a = 2 + 2»
- bс -l
- echo $((2+2))
- awk ‘BEGIN{ print exp(1)+2^(1.0/3); }’
- perl -le «print 3*5»
- python -c «print 9*5»
- mysql -e «select 1+2*(1+2)»
Работа с файлами
Права
- chmod -R 741 /var/www/files — Сменить права рекурсивно (-R) во всей папке files на rwx r— —x, где: 4 – чтение (r), 2 – запись (w), 1 – выполнение (x)
- chmod -R u+rwx,g+r-xw,a-rw+x /var/www/files — Смена прав рекурсивно (-R) во всей папке files на rwx r— —x, где u+rwx — u (user — владелец файла) добавить rwx, g+r-xw (group — пользователи группы владельца) добавить r убрать xw, a-rw+x (all — для всех пользователей, эквивалентно ugo) убрать rw добавить x, где r — чтение, w – запись, x — выполнение
- chattr +Sai — Добавление атрибутов к файлу, синхронное изменение всех данных на диск, без кэширования (S); только добавление данных, удаление и переименование запрещено (a); запрещено удаление, изменение или переименование (i) (immutable).
Поиск
- locate foo — Быстрый поиск по заранее проиндексированным файлам с помощью updatedb.
- pinfo bash — Удобная замена info.
- find /usr/bin -type f -mtime -10 -iname ‘*.log’ — Найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней, с именем заканчивающимся на «.log» без учета регистра.
- find /usr/project \( -name *.htm -o -name ‘*.html’ \) -exec enconv -V —convert-to=UTF-8 {} \; — Конвертировать найденные файлы в правильную кодировку.
- find -iname ‘*.mp3’ -print0 | xargs -0 mid3iconv -eCP1251 —remove-v1 — Конвертация тегов в UTF-8 (должен быть установлен python-mutagen).
- 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 удаляет остальное.
- ls /bakdir/bak-20??-??-??.tar.gz | head -n -7 | egrep -v ’20[01][0-9]-[01][0-9]-01′ | while read I ; do rm -v «$I» ; done — Еще более изящная и ресурсоемкая конструкция.
Вывод
- tar -cjvf /home/user/etc_`date ‘+%Y-%m-%d’ -d yesterday`.tar.bz2 /etc — (с)Запаковать в (f)tar-архив и (j)сжать bzip2 папку /etc c текущей датой в имени файла, с (v)подробным выводом.
- tar -C каталог_источника —exclude={«/home*»,»/etc/passwd*»/,»/etc/shadow*»}-czpvf — . | ssh user@REMOTE_IP «cat > каталог_назначения/backup.tgz» — Запаковать с соответствующими исключениями и передать посредством ssh на удаленный сервер.
- tar -xzvf /home/user/Downloads/centerim-4.22.6.tar.gz -С /opt/ — (x)Распаковать (z)gzip-архив в /opt
- tar —use-compress-program=xz -xvf kernel.txz — Распаковать xz-архив.
- cat /etc/mail.conf | grep -v «#» | sed -e ‘/^ *$/d’ — Показать файл без комментариев и пустых строк (неоптимально).
- egrep -v ‘^#|^$’ /etc/mail.conf — Показать файл без комментариев и пустых строк (оптимально:).
- ls -f1 /var/log/packages/ | wc -l — Вывести количество строк (wc -c — байт).
- diff -y httpd.conf httpd.con.new — Сравнение в две колонки.
- diff -u httpd.conf httpd.con.new — Унифицированное cравнение (в один столбец, но читаемо). (рек. colordiff).
- tail -n +5 /file — Вывести строки, начиная с 5-ой
- egrep -o ‘([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}’ — Вывести только IP.
- … | awk ‘{print($1″SRTING»)}’ — Вывести то что в пайпе, добавив STRING.
- awk ‘$1==»string» {print $2}’ file1 >> file2 — Считать файл file1 , если данные в первом столбце равны ‘string’ добавить в файл file2 данные из второго столбца этой строки
- … | tr ‘\n’ ‘ ‘ — Заменить все переносы строки на пробелы.
- … | awk ‘{s += $2} END {print s*9}’ — Сложить второй столбец и вывести результат умноженный на 9.
Модификация
- sed -i ‘s/foo/too/’ — Заменить foo на too.
- sed -i ’14d’ /file — Удалить 14ю строку.
- sed -i ‘/[Nn]etwork/d’ /file — Удалить строку содержащую Network или network.
- sed -i ‘$ a \\n[mounts]\nuser root’ /etc/munin/config — Добавить в конец файла «[mounts]» затем перенос на новую строка и «user root».
- sed ’14a\ echo \»graph_category logger\»‘ /etc/munin/plugins/command — После 14ой строки добавить «echo «graph_category logger»».
- sed ‘1i \# vim: ft=ruby\n’ — Вставить в начало файла ‘# vim: ft=ruby’ и перенос строки.
- sed -i ‘/LOGREJECT/d’ /var/log/messages — Удалить строки содержащие ‘LOGREJECT’.
- tr -d ‘<символ>’ — Удалить символ. Можно использовать классы символов POSIX (вроде ‘[:space:]’).
- tr -s ‘<X>’ ‘<Y>’ — Заменить символ <Х> на <Y>. Можно использовать классы символов POSIX.
- cat /etc/fstab | tr -s ‘qwertyuiopasdfghjklzxcvbnm’ ‘QWERTYUIOPASDFGHJKLZXCVBNM’ — Заменить все строчные буквы в соответствующем файле на прописные (подобным образом можно делать и транслитерацию).
Работа с дисками
Состояние дисковой подсистемы
- rescan-scsi-bus -l — После добавления sata-диска, чтобы он определился системой (полезно для горячей замены!).
- cat /proc/scsi/scsi — Посмотреть подключенные диски.
- df -h — Показывает занятость подмонтированных дисков.
- du -smc —exclude={proc,sys,dev} /* | sort -g — Получаем отсортированный список самых «тяжелых» каталогов в мегабайтах.
- find . -size +<размер>k — Поиск файлов размер которых превышает указанный (или c — для байтов, M — мегабайт, G — гигабайт. В примере, соответственно, килобайты).
- ls -lSrh — В конце вывода увидим самые большие файлы.
- hdparm -tT /dev/sda — Тестирование производительности диска, ей же можно тонко настроить производительность (обычно не нужно, т.к. современные системы корректно определяют параметры).
- dd if=/dev/sdx of=/dev/null bs=1M — Вроде как выявление проблем с диском.[2]
- hddtemp /dev/sd[a-z] — Температура жестких дисков в системе (раб.<60°C).
Разметка диска
Разметка диска, по сути — запись (таблица разделов в самом начале диска начиная с 447 байта 64 байта) о том где и какие разделы расположены физически на диске. Т.е. редактируя таблицу разделов, данные (находящиеся на жестком диске) остаются нетронутыми.
- sfdisk -luM /dev/sda — Информация о разделах на диске (-uM) в мегабайтах.
- partprobe -s /dev/sda — Перечитывает таблицу разделов блочного устройства.
- cat /proc/partitions — Tаблица разделов, с которыми работает ядро.
- mkfs.ext3 -L fsroot /dev/sda6 — Создать файловую систему ext3 c меткой «fsroot».
- tune2fs -L fsroot /dev/sda6 — Присвоить метку «fsroot» диску, для удобства монтирования (или e2label /dev/sda6 fsroot).
- blkid — Отображает атрибуты: UUID, метку, тип ФС блочных устройств.
- 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 из файла.
- fdisk -p ad2 > /tmp/slices — Скопировать таблицу слайсов в файл.
- fdisk -f /tmp/slices ad0 — Применить таблицу слайсов из файла к ad0.
- 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
- dumpfs -m /dev/da2
Монтирование
- cat /proc/mounts — подробная инфа о примонтированных устройствах. Если нужно коротко, то df -h.
- 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/
- mount -a — Монтировать все из fstab (напр. при добавлении ресурсов).
- mount -o remount,rw /dev/sda1 / — Перемонтировать. Напр., при изменении опций.
- mount —bind olddir newdir — Примонтировать одну директорию к другой.
- fuser -v /opt — Узнать, кто занимает ресурс. Например, если не дает размонтировать.
- fuser -km /opt — Принудительное размонтирование раздела.
- umount -l /dev/sdb1 — Размонтировать, когда ресурс освободится.
Swap
- mkswap -L swap /dev/sda5 — создаём файловую систему для раздела подкачки, устанавливаем метку swap
- swapon /dev/sda5 — подключаем раздел.
- swapon -a — подключаем все разделы с подкачкой прописаные в /etc/fstab.
Создаем файл подкачки вместо раздела. Позволяет перераспределить дисковые ресурсы(при LVM, RAID, XEN), но слегка замедляет работу подкачки. Обычно размер файла подкачки предпочитают устанавливать равным объему оперативной памяти.
- dd if=/dev/zero of=/file.swp bs=1M count=1024 — создаем файл необходимого размера (у нас 1Гб).
- mkswap /file.swp — создаём файловую систему внутри файла.
- swapon /file.swp — подключаем.
- swapoff /dev/sda5 — отключаем подкачку.
- swapoff -a — отключаем все использующиеся файлы и устройства подкачки.
Образ диска
- 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/sdX bs=16065b | netcat <REMOTE_IP> 1234. На целевой системе: netcat -l -p 1234 | dd of=/dev/sdY bs=16065b — Копирование раздела по сети.
Работа с CD/DVD
- dd if=/dev/cdrom of=cd_image.iso bs=1M — Копирование образа (а так же: cp /dev/cdrom cd_image.iso или cat /dev/cdrom > cd_image.iso).
- wodim dev=/dev/cdrom -eject -v mycd.iso — Запись диска.
- genisoimage -f -v -J -o /home/$USERNAME/ARCH/DIR.iso /home/$USERNAME/DIR — Создать iso-образ директории.
Наблюдаем за работой dd:
- killall -s USR1 `pidof dd` — Набираем из другой консоли. dd нам вывалит что-то вроде:
825599+0 записей считано
825599+0 записей написано
скопировано 422706688 байт (423 MB), 16,1309 c, 26,2 MB/c
и продолжит работу.
Более изящный способ, с помощью pv:
$ dd if=/dev/disk | pv >~/disk.iso
278MB 0:00:05 [57,7MB/s] [ <=> ]
А можно и так:
$ dd if=/dev/disk | pv -s $(du -sb /dev/disk | cut -f 1) >~/disk.iso
1,24GB 0:00:49 [26,6MB/s] [=============> ] 28% ETA 0:02:03
А можно и так:
$ watch -n 1 du -h ~/disk.iso
LVM
- vgscan — Поиск по системе виртуальных групп VG
- vgchange -ay — Активизировать виртуальную группу (-an — деактивизировать)
- pvscan — Поиск доступных физических томов и отображение сравнительной информации о них
- pvdisplay /dev/sda1 — Просмотр информации о физическом томе
- pvcreate /dev/sda1 — Подготовка физического тома PV (тип раздела 8Eh)
- pvmove /dev/sda1 — Освобождение физического тома (перенос данных на другие физические тома)
- vgdisplay VG — Просмотреть информацию о виртуальной группе
- vgcreate VG /dev/sda1 /dev/sdb1 — Создание виртуальной группы на основе двух физических томов
- vgremove VG — Удаление виртуальной группы
- vgextend VG /dev/sdc1 — Добавление физического тома к виртуальной группе
- vgreduce VG /dev/sda1 — Удаление физического тома из виртуальной группы
- vgexport VG — Подготовка виртуальной группы для переноса на иную машину
- vgimport VG /dev/sda1 /dev/sda2 — Импорт виртуальной группы (с другой машины)
- lvcreate -L1500 -nlv00 VG — Создание логического тома (LV) с именем nlv00 и размером 1500 Мб
- lvcreate -l 100%FREE -n nlv00 VG — Создаем «логический том» на все доступное пространство.
- lvremove /dev/VG/home — Удаление логического тома
- lvextend -L120M /dev/VG/home — Увеличение размера логического тома до указаной величины
- lvextend -L+100M /dev/VG/home — Увеличение размера логического тома на указанную величину
- lvresize -L +10G /dev/VG/home — Добавляет в логический том 10Гб, при их наличии в физическом томе.
- lvreduce -L120M /dev/VG/home — Уменьшение размера логического тома до указаной величины
- lvreduce -L-100M /dev/VG/home — Уменьшение размера логического тома на указанную величину
- resize2fs /dev/VG/home — Расширяем раздел находу на все доступное пространство (для ext3).
- mkfs.ext3 /dev/VG/home — Создаем файловую систему.
Работа с программами
- echo ‘0-5 20,22 * * 1-5 root bak.sh’ >> /etc/crontab — Запись в означает, что bak.sh будет выполняться cron’ом с нулевой по пятую минуту в 20 и в 22 каждый день с понедельника по пятницу.
- echo ‘*/15 * 3 * root bak.sh’ >> /etc/crontab — bak.sh будет выполняться каждые 15 минут, каждое третье число.
- ps aux | grep process — Вывод системной информации по конкретному процессу.
- kill -TERM `cat /usr/local/apache2/logs/httpd.pid` — Послать сигнал процессу.
- pgrep <PROGRAM_NAME> — Выводит PID’ы процессов.
- pidof <PROGRAM_NAME> — Выводит PID’ы процессов.
- pkill httpd — Послать сигнал найденным процессам.
- killall /usr/sbin/httpd — Послать сигнал процессу только по полному имени.
- nice -n -20 command — Запустить command с наивысшим приоритетом (-n 19 — наименьший).
- ionice -c3 command — Запустить command с наименьшем приоритетом по системе ввода-вывода (-с1 — наивысший). (только для планировщика CFQ).
- env LANG=en_EN command — Запуск программы в другой локали.
- nohup
- command &
- gnome-screenshot —window —delay=5 — Сделать скриншот активного окна, с задержкой 5 секунд.
Управление пакетами
debian-разработчиками рекомендуется aptitude
Действие\система | apt (deb)
Debian, Ubuntu |
yum (rpm)
Fedora, CentOS |
pkgtools
Slackware |
ports
FreeBSD |
packages
FreeBSD |
pacman
ArchLinux |
---|---|---|---|---|---|---|
Установка пакета из репозитория | aptitude install foo | yum install foo -y | — | cd /usr/ports/foo && make install | pkg_add -r foo | pacman -S foo |
Установка локального пакета | dpkg -i foo.deb | yum localinstall foo.rpm
rpm -ivh foo.rpm |
installpkg foo.tgz | pkg_add foo.tgz | pacman -U foo.pkg.tar.gz | |
Обновление существующих пакетов | aptitude upgrade | yum update foo | upgradepkg foo.tgz | pacman -Su | ||
Удаление пакета | aptitude remove foo | yum erase foo | removepkg foo | cd /usr/ports/foo && make deinstall | pkg_delete foo | pacman -R foo |
Обновления списка пакетов из репозиториев. | aptitude update | yum check-update | — | pkg_version | pacman -Sy | |
Поиск по имени пакета | apt-cache search foo | yum list foo | — | whereis fullnamefoo или make search key=foo | ||
Поиск по описанию и имени пакета | aptitude search foo | yum search foo | — | https://www.freebsd.org/ports/ | — | pacman -Ss foo |
Показать информацию о пакете | aptitude show foo | yum info foo | — | pkg_info -L foo-1.0 | less | pacman -Si foo | |
Список пакетов установленных в системе | dpkg -l | yum list installed
rpm -qa |
ls /var/log/packages/ | ls /var/db/pkg/ | pkg_info | pacman -Ql |
Поиск имени пакета по файлу | apt-file search file | yum provides file | grep -R file /var/log/packages/ | pacman -Qo file |
- aptitude install debian-archive-keyring — Обновить ключи репозиториев.
Сборка пакетов
- rpm -i foo-1.2.src.rpm && cd /usr/src/redhat/SPECS && rpmbuild -bb foo-1.2.spec — Собрать foo.rpm.
- cd /usr/ports/foo && make package — Собрать package для FreeBSD.
Система
Конфигурация
- ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime — Установка часового пояса.
- ntpdate ntpserver — Жесткая синхронизация времени (быстрая смена времени может быть вредна некоторым сервисам, рек. ntpd).
- sysctl -a — Вывести текущие настройки ядра.
- sysctl -p — Применить настройки ядра /etc/sysctl.conf (для слаки вероятно параметры задавать в rc.local).
- hostname -F /etc/hostnamefile — Установить сетевое имя из файла (см. ниже).
Для Debian-like
- /etc/hostname — Прописываем имя машины.
- dpkg-reconfigure locales — Установка системной локали.
Для RHEL-like
- /etc/sysconfig/network — Прописываем имя машины (напр. HOSTNAME=localhost.localdomain).
- /etc/sysconfig/clock — Правка часового пояса.
Для Slackware
- /etc/HOSTNAME — Прописываем имя машины.
Пользователи
- useradd -r —uid 1000 — Создать системного пользователя munin.
- userdel -r — Удалить пользователя вместе с домашним каталогом.
- vipw — Редактор vi блокирует /etc/passwd, так, чтобы другие команды не могли модифицировать его в то же самое время.
- vigr — Редактор vi блокирует /etc/group, так, чтобы другие команды не могли модифицировать его в то же самое время.
- visudo — Спец редактор vi для правки /etc/sudoers. (visudo -c — проверка синтаксиса).
Железо (Модули)
- lsmod — Показать загруженные модули.
- modinfo — Показать информацию о модуле (зависимости и т.п.)
- modprobe foo — Включить модуль.
- modprobe -vr foo — Удалить неиспльзуемый модуль (почти тоже что и *rmmod foo*)
- modprobe -vr pcspkr — Выключить динамик на материнской плате. А еще лучше echo ‘blacklist pcspkr’ >> /etc/modprobe.d/blacklist
- cat /dev/dsp > wave-file.wav — Записываем несжатый аудио‐поток с микрофона компьютера через вход звуковой карты.
- cat wave-file.wav > /dev/dsp — Проиграть файл.
Мониторинг
- htop — Правильная замена top.
- vmstat 5 — Подробные сведения о нагрузке.
- dstat — Удобный генератор статистики по ресурсам.
- iostat 5 -m -x — Нагрузка на разделы дисков в мегабайтах, с усредненным значением за 5 секунд.
- iotop — Анализ нагрузки отдельными программами на дисковую подсистему (python)
- atop — Анализ нагрузки отдельными программами на дисковую подсистему (надо патчить ядро).
- tailf или tail -f /путь/к/логу — Просмотр изменений лога.
- Нажатие Shift+f в less аналогично поведению tailf
- iftop — Статистика по сетевому интерфейсу в реальном времени
- ifstat -TtSnqA -i wimax0 — Статистика по конкретному сетевому интерфейсу и по общему трафику в реальном времени.
- apachetop и mytop — Статистика в реальном времени по запросам apache и mysql соответсвенно
- iptraf — Грамотный сетевой монитор.
- watch -n 1 <program> — Запускать программу раз в 1 секунду. Удобно наблюдать за выводом программ.
Ядро
- lsmod — Показать загруженные модули.
- modprobe foo — Включить модуль.
- modprobe -vr foo — Удалить неиспльзуемый модуль (почти тоже что и *rmmod foo*)
Пересборка ядра
- Скачать ядро, разархивировать и перейти в папку с исходниками (cd /usr/src/linux-2.6.30).
- make config — Конфигурация сборки ядра создается файл .config (удобнее menuconfig или xconfig). Для надежности можно взять конфиг уже рабочей системы и править его (cp /boot/config-generic-2.6.29.4 /usr/src/linux-2.6.30/.config).
- make dep — Создание файлов зависимостей.
- make clean — Очистка от ранее скомпилированных модулей.
- make — Компиляция ядра.
- make kernelversion — Узнать версию скомпилированного ядра.
- make install — Установка ядра (желательно делать это вручную cp arch/i386/boot/bzImage /boot/bzImage-2.6.23.1 и cp System.map /boot/System.map-2.6.23.1).
- make modules — Компиляция модулей.
- make modules_install — Установка модулей.
- cp System.map /boot/System.map-2.6.30
- cd /boot; mkinitrd -c -k 2.6.30 -m mbcache:jbd:ext3 -f ext3 -r /dev/sda2 — Пересборка initrd.
- И добавить ядро в загрузчик.
Сети
Уровень стека протоколов | Протоколы | Описание |
---|---|---|
Прикладной | DHCP, SSH, SMTP, HTTP, FTP, DNS | На этом уровне работают пользовательские приложения |
Транспортный | TCP (сегмент), UDP, RTP, SCTP, DCCP | Этот уровень поддерживают все устройства, участвующие в сетевом обмене информацией (ПК, серверы, сетевые принтеры). В TCP соединение устанавливается прозрачно (между конечными сторонами). |
Межсетевой (сетевой) | Для TCP/IP это IP (дейтаграмма) (IPv6) (вспомогательные протоколы, вроде ICMP(пинги) и IGMP работают поверх IP, но являются частью сетевого уровня; ARP не работает поверх IP) | На этом уровне работают маршрутизаторы (router) и коммутаторы уровня 3 (L3 switch) |
Канальный (уровня доступа) | Ethernet(фрейм), Token ring, PPP, IEEE 802.11 Wi-Fi, ISDN | На этом уровне работают коммутаторы (switch), хабы (hub) работают на физическом уровне. |
Физический | Определяет: Тип среды передачи (медь, оптика, радиоэфир, окружающее пространство); Метод передачи информации (широкополосный, узкополосный); Тип синхронизации (синронный, асинхронный — в последовательных интерфейах; в параллельных интерфейсах для передачи инф. о синхр. используется отдельный проводник); А также на физическом уровне осуществляется мультиплексирование сигналов. |
Конфигурация
- /etc/resolv.conf — DNS-сервера провайдера (для RHEL-like можно также указать в конфиге DNS{1,2}=80.80.111.254, он приоритетней).
- /etc/sysctl.conf — Для маршрутизации пакетов в системе net.ipv4.ip_forward = 1 (или в rc.local добавить строку: echo 1 > /proc/sys/net/ipv4/ip_forward)
- ip route add 192.168.124.0/24 via 192.168.0.220 — Добавить маршрут (до перезагрузки).
- ip r a 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».
- route add default gw 192.168.1.1 — добавить маршрут по умолчанию через шлюз 192.168.1.1 (до перезагрузки).
- vconfig <NET_DEV> <VLAN_ID> — добавить тегированный интерфейс (для трафика VLAN; предварительно убедиться, что подгружен модуль 8021q).
- brctl addbr <BRIDGE_NAME> — Создать контейнер интерфейсов для коммутатора (нужен модуль ядра bridge).
- brctl addif <BRIDGE_NAME> <IFACE> — Добавить интерфейс в созданный коммутатор.
Для Debian-like
- /etc/network/interfaces — Файл конфигурации интерфейсов.
Для RHEL-like
- /etc/sysconfig/networking/devices/ifcfg-eth0 — Файл конфигурации интерфейса (/etc/sysconfig/network-scripts/ifcfg-eth0 — жесткая ссылка на него же)
- /etc/sysconfig/network-scripts/route-eth0 — Файл статической маршрутизации, с синтаксисом: 192.168.124.0/24 via 192.168.0.220 dev eth0 или ADDRESS0=192.168.124.0
Для Slackware
- /etc/rc.d/rc.inet1.conf — Файл конфигурации интерфейсов.
- /etc/udev/rules.d/70-persistent-net.rules — Переопределение имени инт. (напр. eth1 -> eth0)
Мониторинг
- traceroute -i eth3 ya.ru — Трассировать через определенный интерфейс (для отладки маршрута).
- ping -I eth1 -i4 -c3 host — Пропинговать хост через eth1 три раза с интрервалом в 4 секунды.
- mtr ya.ru — tracert и ping в одном флаконе.
- ifconfig — Вывод конфигурации всех интерфейсов (рек. ip addr).
- netstat -tunap — Список всех портов и соединений (lsof -i -n).
- netstat -tnlpu — Список всех слушающих приложений и соответствующих tcp/udp портов. Чтобы видеть все приложения, запускать необходимо от рута.
- 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 not udp port 5001 — Ищем незнакомый трафик в сети.
- tcpdump -c 100 -nni vlan100 dst megahost.ru and icmp — Отфильтровать 100 сообщений ICMP для megahost.ru.
- ip neigh (ip link, ip address, ip route, ip rule, ip tunnel и пр. ) — Показать соседей канального уровня (линки, ip-адреса, маршруты, таблицы правил маршрутизации: утилиты из состава iproute2).
- ethtool eth0 — Статистика интерфейса, режимы текущего соединения и поддерживаемых соединений и прочее.
Сетевые сервисы и утилиты
- rdesktop 192.168.0.1 -u admin -p ‘pass’ -fzPa8 -k ru — Подключение к RDP серверу со сжатием, кэшированием, на полный экран, с русской раскладкой.
- xfreerdp 192.168.0.1 -u admin -p ‘pass’ -k common -g 1280×1024 — Подключение к RDP серверу под соответствующим пользователем с соответствующим паролем, раскладкой, в окне соответствующего разрешения. Клиент — допиленный rdesktop.
- ssh -L5555:192.168.0.10:80 root@213.37.57.236 — После установки соединения твой локальный порт 5555 будет проброшен на 192.168.0.10:80.
- ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa — Создать пару ключей (секретный и публичный) длинной 2048 бит и положить их в ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub соответственно
- ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host_ip’ — скопировать публичный ключ (id_rsa.pub) на удаленную машину user@machine. Это позволить заходить на machine по ssh без ввода пароля.
- scp remote_user@remote_host_ip:/etc/rc.d/autostart.sh /<local_dir> — Копирование файла /etc/rc.d/autostart.sh с удаленного хоста в локальную директорию <local_dir>.
- sftp -i ~/.ssh/id_rsa remote_host_ip — Подключиться к удаленному, встроенному в openssh, sftp-серверу посредством ssh с авторизацией по ключу.
- pdsh -w root@host-0[1-7,10] uptime — Выполнить команду uptime на хостах с 1 по 7 и на 10ом. Предварительно должен быть настроен вход ssh по ключам.
- sshfs -o allow_other user@host:/home/user/ /mnt/host_user/ — монтирует /home/user/ удаленного хоста(host) в /mnt/host_user/. Опция allow_other позволяет другим пользователям обращаться к ресурсу.
- pdcp -w root@host-0[1-7,10],root@otherhost /home/user/.vimrc /root/ — Копировать локальный файл .vimrc в папку /root на удаленных хостах. pdsh должен быть установлен на всех хостах.
- trickle — Шейпер трафика (неудобный).
- knockd — Забавный инструмент ограничения доступа к портам.
- ngrep — Простой и удобный сниффер.
- netsed — Модификация трафика на лету.
- autossh — Поддержания ssh соединения.
- iperf — Анализ пропускной способности канала (генератор TCP и UDP трафика).
- #pptpsetup —create <CONNECTION_NAME> —server <PPTP_SERVER_IP> —username <USERNAME> —password <PASSWORD> —encrypt mschap —start — Создать и поднять pptp соединение.
- #pon <CONNECTION_NAME> — Поднять туннель.
- #poff <CONNECTION_NAME> — Отключить туннель.
- mausezahn — Грамотный конструктор сетевых пакетов-генератор трафика.
- nemesis — Также конструктор сетевых пакетов-генератор трафика.
- nmap — Сетевой сканер.
Сеть PPPoE
- pppoeconf — поиск и настройка концентратора pppoe.
- pon dsl-provider — установить соединение.
- poff — разорвать соединение.
mplayer, mencoder
CUE
shnsplit -f *.cue -o flac -t ‘%p-%a-%n-%t’ -m \ _ *.ape — Разделить образ диска ape на отдельные композиции. cuetag sample.cue track*.flac — Прописать теги.
mplayer
- mplayer dvd:// -dvd-device <dir> — воспроизведение контента DVD из каталога <dir>
- mplayer -vf cropdetect — определение кропа
- mplayer -vf crop=704:416:8:80 — воспроизведение с кропом
- mplayer -af volume=20.1:0 — увеличение громкости
- mplayer -idx file.avi — воспроизведение файла с «битым» индексом
«Вырезаем» звук из видеофайла:
mplayer file.avi -dumpaudio -dumpfile audio.ac3
mplayer file.avi -vo null -ao pcm:fast:file=filename.wav
ffmpeg -i file.avi -vn output.mp3
Кодирование
Запись видео с вебкамеры:
$ mencoder tv:// -tv driver=v4l:device=/dev/video0:width=640:height=480:forceaudio -ovc \ lavc -oac lavc -lavcopts vcodec=mpeg4:acodec=mp3 -ffourcc divx -o test.avi
«Склеиваем» два видеофайла:
$ mencoder -oac copy -ovc copy out.avi file_1.avi file_2.avi
Вырезаем пятисекундный кусок из видеофайла:
$ mencoder -oac copy -ovc copy -ss 00:00 -endpos 0:05 file.avi -o out.avi
Кодируем видеофайл в 3gp:
$ ffmpeg -i file.avi -b 200Kb -r 12 -s qcif -ac 1 -ab 12.2k -ar 8000 out.3gp
Исправляем «битые» индексы:
$ mencoder input.avi -forceidx -oac copy -ovc copy -o output.aviили же:
$ avifix -i input.avi
Скрипт для кодирования DVD:
#!/bin/bash TITLE= ABR=128 VOLUME=5 DVDDEV="./" OUT=out VBR=600000 while true ; do case "$1" in --vers | --versi | --versio | --version) echo $"`basename $0` 0.3" printf $"Copyright '(C)' %s Free Software Foundation, Inc.\nThis is free software; \ see the source for copying conditions.\nThere is NO warranty; not even for MERCHANTABILITY \ or FITNESS FOR A PARTICULAR PURPOSE.\n" "2009" printf $"Written by %s aka %s.\n" "Zakhary Akulov" "hozzzar" printf $"Feel free to email me about possible bug at %s.\n" "hozzzar@gmail.com" exit 0 shift ;; -h | --h | -help | --help) echo $"Использование: `basename $0` [-t title] [-ab bitrate] [-vb bitrate] [-v volume] [-d dvd-device] -ab, --abitrate требуемый аудиобитрейт, по умолчанию -- 128 kbps -vb, --vbitrate требуемый видеобитрейт, по умолчанию -- для 700Mb диска -d, --dvd путь к каталогу DVD -t, --title номер тайтла -v, --volume громкость, по умолчанию 5 -s, --start начало фрагмента, MM:SS -e, --end продолжительность фрагмента, MM:SS --scale масштабирование в пикселах, ширина:высота -o, --output файл вывода, без пробелов и расширения -h, --help показать эту справку и выйти --version показать версию и выйти" exit 0 shift ;; -ab | --ab | -abitrate | --abitrate) ABR="$2" shift 2 ;; -vb | --vb | -vbitrate | --vbitrate) VBR="$2" shift 2 ;; -d | --d | -dvd | --dvd) DVDDEV="$2" shift 2 ;; -t | --t | --title | -tile) TITLE="$2" shift 2 ;; -v | --v | -volume | --volume) VOLUME="$2" shift 2 ;; -s | --s | -start | --start) SPOS="-ss $2" shift 2 ;; -e | --e | -end | --end) EPOS="-endpos $2" shift 2 ;; --scale) SCALE=",scale=$2" shift 2 ;; -o | --o | -output | --output) OUT="$2" shift 2 ;; --) # Останов. shift; break ;; -*) echo >&2 $"`basename $0`: не могу распознать опцию '$1'" echo >&2 $"Наберите '`basename $0` --help' для получения справки." exit 1 ;; *) break ;; esac done mplayer dvd://${TITLE} -dvd-device ${DVDDEV} -vf cropdetect \ -ss 10:00 -endpos 00:05 > cropfile CROP=`awk -F' ' '{print($24)}' cropfile |grep -m 1 crop | sed 's/..$//g'` mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc frameno -oac mp3lame \ -lameopts abr:br=${ABR}:mode=1:vol=${VOLUME} -o frameno.avi mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc xvid \ -xvidencopts pass=1:vhq=1:vhq=4:gmc \ -vf ${CROP}${SCALE},hqdn3d=2:1:2 -oac copy -o /dev/null mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc xvid \ -xvidencopts pass=2:vhq=1:vhq=4:gmc:bitrate=-${VBR} \ -vf ${CROP}${SCALE},hqdn3d=2:1:2 -oac copy -o ${OUT}.avi
Примечания
- ↑ Граммар-наци в ярости!
- ↑ Вроде как бы да, если простое считывание окажется для него серьёзной нагрузкой. Кошёрней сделать дамп диска, а потом сравнить хэши.
Просмотров: 2728