Мини заметки — выпуск 13, полностью посвященный Linux

10 июля 2013

Этот выпуск полностью посвящен Linux’ам. Я пользуюсь Ubuntu, но подозреваю, что многое из написанного также будет справедливо и для других дистрибутивов. Сегодня мы выясним, как установить самое свежее ядро и, если что-то пошло не так, откатиться к старой версии, как посмотреть список установленных в данный момент TCP-соединений, как найти руткиты в системе и не только. Предыдущие выпуски: двенадцатый, одиннадцатый, десятый, девятый.

1. Установка свежего ядра Linux

Здесь вы найдете сборки последних версий ядра для Ubuntu. Имеет смысл попробовать одно из этих ядер, если у вас не подцепляется какое-то железо. Или если вы просто хотите внести свой вклад в тестирование ядра Linux.

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

2. При работе ноута от аккумулятора пропадает WiFi :(

При работе от батареи Ubuntu включает управление питанием WiFi (WiFi power management), что существенно снижает скорость передачи данных по WiFi и нередко может привести к потере выхода в сеть. Например, на моей машине при работе от сети пинги до mail.ru идут 10 мс, а при работает от батареи — 100 мс. Чтобы отключить управление питанием делаем следующее.

При работе от аккумулятора говорим iwconfig. Если видим:

Power Management:on

… значит управление питанием активно. Пингуем mail.ru. Говорим:

sudo iwconfig wlan0 power off

Снова пингуем. Теперь пинги должны возвращаться намного быстрее.

Для закрепления результата прописываем в /etc/pm/power.d/wireless:

#!/bin/sh
/sbin/iwconfig wlan0 power off

… и говорим:

chmod a+x /etc/pm/power.d/wireless

Проверяем, что теперь управление питанием отключено независимо от того, работаем ли мы от батареи или от сети.

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

3. Самый простой способ зашифровать каталог

Есть такое замечательное приложение CryptKeeper:

sudo apt-get install cryptkeeper

Программа висит в трее и позволяет создавать, монтировать и демонтировать зашифрованные каталоги. Делать все это можно и из консоли.

Создать новую зашифрованный каталог:

encfs ~/.private_encfs ~/private

Примонтировать:

encfs /path/to/.private_encfs /path/to/private

Демонтировать:

fusermount -u /path/to/private

Для управления зашифрованными каталогами из консоли требуется пакет encfs:

sudo apt-get install encfs

Если вы поставили CryptoKeeper, этот пакет у вас уже установлен.

4. Как угомонить OOM Killer

Если при выполнении требовательных к оперативной памяти операций (например, компиляции программ на Scala) у вас «умирают» вкладки в Chrome, значит нужно либо докупить памяти, либо сделать следующее.

Под рутом говорим:

echo 100 > /proc/sys/vm/overcommit_ratio
echo 2 > /proc/sys/vm/overcommit_memory

В файле /etc/sysctl.conf прописываем:

vm.overcommit_memory=2
vm.overcommit_ratio=100

Здесь цифра 2 означает стратегию OVERCOMMIT_NEVER. При этой стратегии допустимый объем пространства памяти вычисляется как swap + ram * overcommit_ratio / 100. Помимо этого операционная система резервирует около 3% памяти для процессов пользователя root.

Рецепт был позаимствован из блога avz.org.ua.

5. Ищем руткиты с помощью контрольных сумм пакетов

Для решения этой задачи есть прекрасный пакет debsums:

sudo apt-get install debsums
sudo debsums -ca

Если контрольные суммы не сходятся, значит либо вы правили что-то руками, либо вас поломали.

6. Как в Ubuntu узнать температуру ядер процессора?

Устанавливаем пакет lm-sensors:

sudo apt-get install lm-sensors

Говорим sensors. Должны увидеть что-то вроде:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +106.0°C)
temp2:        +29.8°C  (crit = +106.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +41.0°C  (high = +85.0°C, crit = +105.0°C)
Core 0:         +38.0°C  (high = +85.0°C, crit = +105.0°C)
Core 1:         +35.0°C  (high = +85.0°C, crit = +105.0°C)
Core 2:         +38.0°C  (high = +85.0°C, crit = +105.0°C)
Core 3:         +41.0°C  (high = +85.0°C, crit = +105.0°C)

7. Как узнать скорость вращения кулеров?

Говорим:

sudo sensors-detect

Эта команда находит сенсоры, выводит список соответствующих модулей ядра и добавляет их в /etc/modules.

sudo service module-init-tools start

Эта команда подгружает добавленные модули ядра. Посмотреть список загруженных модулей можно командой sudo lsmod. Если все было сделано правильно, то теперь в выводе команды sensors также будет отображаться информация о скорости вращения кулеров.

8. Как определить имя недостающего пакета

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

command_not_found_handler() {
  /usr/lib/command-not-found $1
}

… в ~/.zshrc, затем говорим:

source ~/.zshrc

… и радуемся жизни!

9. Лимит на количество открытых файловых дескрипторов

Команда ulimit -a выводит различную информацию, в том числе и максимальное количество файловых дескрипторов, которое может открыть один процесс. Список файловых дескрипторов, открытых заданным процессом, можно посмотреть командой:

sudo ls -l /proc/1026/fd

Более удобный вариант:

sudo lsof -p 1026

Увеличить лимит можно, прописав что-то вроде:

eax          hard    nofile 50000

… в файле /etc/security/limits.conf.

10. Следим за трафиком

Иногда требуется посмотреть, какие TCP-соединения в данный момент установлены, на каком сетевом интерфейсе какой объем трафика создается и так далее. Для решения этих задач в Linux есть утилиты iftop и iptraf. Обе утилиты прекрасны. Первая чуть попроще, вторая чуть помощнее. На мой взгляд в арсенале нужно держать обе. Для определения, какой порт какой программой используется, можно воспользоваться командой sudo netstat -tuwpan. Выяснить, какая программа создает больше всего трафика, поможет утилита nethogs. Если нужно просто посмотреть объем текущего трафика, попробуйте ifstat.

Дополнение: Мини заметки — выпуск 14

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.