28.07.13

youtube-viewer

Сам не люблю таких советчиков, которые вместо решения проблемы предлагают использовать другую программу/систему/железо и т.д. Но лично я отказался от просмотра youtube в браузерах. Надоел воющий кулер в ноутбуке при воспроизведении видео flashplugin'ом. Вместо этого использую youtube-viewer, mplayer, два скрипта и два хоткея.

Скрипт 1:
#!/bin/sh
YOUTUBE=$( xclip -o )
if $YOUTUBE = "" ;
then exit 1;
fi
youtube-viewer --resolution=480 --cache=90000 $YOUTUBE
exit 0

Скрипт 2:
#!/bin/sh
YOUTUBE=$( xclip -o )
if $YOUTUBE = "" ;
then exit 1;
fi
RESOLUTION="$(zenity --list --radiolist --title="Разрешение" --text "Укажите разрешение воспроизводимого файла" --column "" --column "Разрешение" FALSE "144" FALSE "180" FALSE "240" FALSE "340" FALSE "360" TRUE "480" FALSE "720" FALSE "1080" --height 250)"
youtube-viewer --resolution=$RESOLUTION --cache=90000 $YOUTUBE
exit 0

Один скрипт повешен на один хоткей, второй — на другой. Теперь достаточно скопировать ссылку на ролик, нажать хоткей и наслаждаться видео в 480p без загрузки процессора под 40-50%. Полноэкранный режим — по клавише "f", выход — по клавише "q" (остальные хоткеи mplayer'а см. help к этой программе). Для удобства я в Openbox'е раздекорировал окно запускаемого mplayer'а и задал ему запуск всегда по центру экрана. Выглядит довольно приятно.
Если хочется выбрать разрешение воспроизводимого ролика, используется второй скрипт. Остальное, вроде бы, в пояснениях не нуждается.
Настройки кэша и разрешения ролика по умолчанию можно подобрать индивидуально, в зависимости от скорости Вашего интернет-соединения. youtube-viewer позволяет и вводить логин и пароль к youtube, просматривать страницу youtube.com, как в браузере, выбирая ролики для просмотра, читать комментарии к роликам, запоминает просмотренные ролики и т.д. Довольно удобная программка, хотя и консольная. Прошу прощения, если эта информация была излишней.

27.07.13

скриптик показывает, что обновилось на заданную дату pacman

Собственно вот такой скриптик показывает, что обновилось на заданную дату:

#!/bin/sh
fdate="$*"
if [ ${#fdate} = 0 ]
then
   fdate=`date +%Y-%m-%d`
fi
#
cat /var/log/pacman.log | grep -e $fdate | grep -e 'installed \| upgraded' | awk -F' ' '{print $5, $6, $7, $8 }'

Ускорение Ubuntu

В любой операционной системе есть настройки, изменение которых приводят к её ускорению. Настройки по умолчанию обычно всегда консервативны, так как их назначение работать на большинстве компьютеров. Если понимать, что приобретаешь и что теряешь, изменяя те или иные настройки, то можно добиться существенного ускорения работы Ubuntu и приложений.
В статье вы не найдете тестов, которые бы количественно бы указывали на сколько быстрее стали те или иные операции или приложения, то есть даны эмпирические советы, которые вы должны с осторожностью применять и следить за изменениями и последствиями в вашей системе.
Оглавление
Ускорение загрузки Ubuntu
Отключение Compiz
Ускорение GTK
Оптимизация Gnome
Системное меню Gnome
Ускорение Unity
Ускорение Qt
Ускорение KDE
Ускорение Ubuntu программ с помощью preload
Корректное преобразование имени компьютера
Тотальная чистка и реиндексация Sqlite
Быстрая Epiphany
Создание кэшей
Подкачка Ubuntu
Оптимизация XML файлов Ubuntu
Быстрый старт OpenOffice
Кэширование символьных таблиц
Ускорение Xorg
Приоритет Xorg
Отключаем Антифишинг для ускорения Mozilla Firefox
Ускорение файловой системы
Ускорение сервера шрифтов
Заключение


Удаление бесполезных зависимостей (сирот) в Arch Linux

Никогда особо не задумывался над тем, есть ли у меня в системе пакеты, которые не используются ничем вообще… Висят себе и висят - места на компе навалом, что зря беспокоиться?…
Однако, в очередной раз ползая по Линукс-форумам, наткнулся на мнение, что наличие множества бесполезных зависимостей может несколько тормозить систему… Честно говоря, не понимаю, как оно собирается ее тормозить, но решил глянуть, что у меня там лишнего.

Посмотреть, какие пакеты не используются ничем в системе можно командой
sudo pacman -Qdt
У меня эта команда выдала десятка четыре пакетов…
Ну а удалить всех так называемых "сирот" можно командой
sudo pacman -Rsn $(pacman -Qdtq)
Сразу хочу предупредить, прежде чем пользоваться данной командой, помните, что автоматика - она и есть автоматика… То есть пакман может зацепить таким макаром какой-нибудь нужный пакет (маловероятно, но случаи были), и Вы потом долго будете думать, почему вдруг перестала запускаться любимая программа…
Вобщем, в любом случае, прежде, чем что-то делать, нужно понимать что делаешь Я предпочитаю удалять из списка, выданного первой командой вручную - по крайней мере, знаю что удалил

Localepurge — удаляем ненужные локали

Обнаружил одну простенькую и интересную утилиту, с помощью которой освободил корень своего диска почти на 550 Мегабайт.
Утилита называется Localepurge и служит для того, чтобы удалить неиспользуемые в системе локали…

В Арче устанавливается она через Йогурт (yaourt):
yaourt localepurge
После этого в конфиге (/etc/locale.nopurge) необходимо настроить, какие локали оставлять, мой конфиг выглядит вот так:
1
2
3
4
5
6
7
8
9
10
11
MANDELETE
SHOWFREEDSPACE
VERBOSE
 
ru
ru_RU.UTF-8 UTF-8
ru_RU.KOI8-R KOI8-R
en
en_US
en_US.UTF-8 UTF-8
en_US ISO-8859-1
Ну или кому какие локали нужны…
Затем запускаем команду:
sudo localepurge
И все… излишки удалены и не захламляют диск Потом можно еще раз перегенерировать список локалей командой sudo locale-gen

23.07.13

Как получить ключ репозитория и добавить его в базу apt

В новых версиях Ubuntu при добавлении стороннего репозитарий пакетов необходимо импортировать его ключ с сервера ключей.

1. Добавляем репозиторий в /etc/apt/sources.list
2. Делаем: sudo apt-get update. Получаем строку с ошибкой "Следующие подписи не могут быть проверены, так как не доступен открытый ключ: NO_PUBKEY 9ECBEC467F0CEB10". Цифры в конце это ключ, который нужно импортировать.
3. Выполняем команду, указывая нужный ключ:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 9ECBEC467F0CEB10По умолчанию для получения ключа используется порт 11371, если этот порт закрыт можно указать чтобы для получения ключа использовался 80 порт:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9ECBEC467F0CEB10
При использовании прокси выполняем следующую команду:
sudo apt-key adv --keyserver-options http-proxy="http://адрес прокси:порт" --keyserver hkp://keyserver.ubuntu.com:80 --recv 9ECBEC467F0CEB10

Мышь в консоли

Мышь в консоли Debian можно очень легко настроить установкой пакета gpm:
apt-get install gpm
Дальше идем в консоль и там пишем
invoke-rc.d gpm start
Вот и все ;)

09.07.13

Debian. Настройка log для cron

По умолчанию он пишет в syslog, а для отладки хотелось бы видеть.

в консоли

# nano /etc/rsyslog.conf

находим

#cron.* /var/log/cron.log

раскоментируем

cron.* /var/log/cron.log

рестартуем демона

# /etc/init.d/rsyslog restart

16.06.13

Как отключить "Checking for corrupt, not cleanly closed and upgrade needing tables.. " в Debian?

Этим в Debian занимается скрипт: /etc/mysql/debian-start. Открываем его:

vi /etc/mysql/debian-start

И комментируем следующую строку:
#check_for_crashed_tables;


После этого перезапуск будет выполняться быстрее:

/etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

MySQL - ошибка Checking for corrupt, not cleanly closed and upgrade needing tables

Данное сообщение не является ошибкой.
Такой строкой скрипт запуска MySQL рассказывает. что он:
  • Проверяет наличие поврежденный таблиц
  • Проверяет наличие не закрытых таблиц
  • Проверяет наличие не обновленных таблиц, если вы обновили версию MySQL.
Можно принудительно проверить вcе таблицы для спокойствия
mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
mysql_upgrade --force -u root -p

06.06.13

BitTorrent Sync and Share

В интернетах появилась весьма занимательная штука для синхронизации папок на двух разных компьютерах в локальной сети по защищенному протоколу P2P — BitTorrent Sync. Чем примечательна эта штука? Мне лично понравилось следующее: простая установка, простая настройка, веб интерфейс, отличное качество работы, безопасность и сама идея. Для домашнего использования мне кажется очень даже удобно. В чем фишка? Приведу пример, я ездил заграницу, все фотки отклацанные на фотик складывал в папку в DropBox что-бы они синхронизировались на устройства и на сервер, что самое важное. Эта прога позволяет закидывать все в папку и через защищенный протокол синхронизировать данные в локальной сети. Для удаленной работы двух компов как все понимают тут нужны l2tp или vpn туннель. В общем разберемся по ходу дела.

Установка BitTorrent Sync

Для установки клиента-сервера вам даже не нужен графический интерфейс.
Качаем прогу:
  1. wget http://btsync.s3-website-us-east-1.amazonaws.com/btsync_i386.tar.gz
Или с сайта: http://labs.bittorrent.com/experiments/sync/get-started.html
Распаковываем и запускаем:
  1. tar xvf btsync_i386.tar.gz
  2. chmod +x btsync
  3. ./btsync
Вся прелесть в том, что вам даже не нужны права администратора.
Помощь по функциям проги:
  1. ./btsync --help
Остановить программу:
  1. killall btsync

Работа BitTorrent Sync

Еще раз, запускаем прогу так:
  1. ./btsync
Если вы используете Ubuntu\Debian то логично думать, что ваша система надежно защищена файрволлом, так что не забудьте открыть порт:
Для UFW:
  1. sudo ufw allow 888
Для IPtables:
  1. -A INPUT -p tcp --dport 8888 -j ACCEPT
Далее откройте браузер и перейдите по адресу http://localhost:8888/gui/
BitTorrent Sync - Google Chrome_001
Следующий шаг это выбор каталога для синхронизации и генерирование 21-битного Base32 защищенного ключа.
BitTorrent Sync - Google Chrome_002
Теперь на другом устройстве в сети скайчайте программу и запустите, как мы уже делали выше, введите IP-адрес устройства в браузере и добавьте каталог для синхронизации, а в строку с ключем вставте ранее сгенерированный ключ. И все! Синхронизация каталогов начнется.
BitTorrent Sync - Google Chrome_003
Вот сам процесс:
BitTorrent Sync - Google Chrome_004
Как и обещал все оказалось просто.
Полазте в настройках веб-интерфейса, но там не много опций, если хотите чуть больше, то нужно сделать дамп стандартного конфига программы:
  1. ./btsync --dump-sample-config > sync.conf
Далее поправить его и запустить прогу с новым конфигом:
  1. ./btsync --config sync.conf
Что интересного в конфиге?
  • - Настроить авторизацию по логину и паролю
  • - Настройить скорость download & upload
  • - Настроить папки которые нужно синхронизировать
Что в итоге?
Программа отлично работает без прав рута, что только радует. Ею можно удаленно управлять через удобный и простой веб-интерфейс. Программа предназначенна для синхронизации крупных файлов >10GB. Программа стабильна и не ест ресурсы. Многие говорят, что ее главный минус это закрытый код, но давайте не будем :) про теории заговора и прочие штуки. Мне лично она очень понравилась своей надежностью и простой.

05.06.13

починить монтирование

Надо в /etc/polkit-1/rules.d/ создать файл с именем 99-my.rules (название особой роли не играет, важно только расширение и желателен номер) и прописать туда:
polkit.addRule(function(action, subject) {
                if (action.id.indexOf("org.freedesktop.udisks2.") == 0 && subject.isInGroup("storage")) {
                        return polkit.Result.YES;
                }
        }
);
Как сами видите, юзер должен быть в группе storage.

26.05.13

запуск virtualbox в другой tty

#Вот этот полезный алиас запускает virtualbox с машиной XP на отдельной виртуальной консоли, 
в отдельном экземпляре X-сервера, очень удобно и выглядит будто машина запушена на 
реальной аппаратуре
 
alias startXP="xinit /usr/bin/VirtualBox --startvm \"WinXP\" --fullscreen -- /usr/bin/Xorg :1"




Те, кто работает админом и занимается тех.поддержкой пользователей в крупных конторах, часто сталкиваются с необходимостью держать на рабочей машине Windows наряду с любимой ОС — в данном случае Debian GNU/Linux. Задачи, вынуждающие ставить винду могут быть разными. Средства тоже: кто-то ставит VMWare, кто-то qemu, я пользуюсь VirtualBox. В общем виртуальными машинами сейчас никого не удивить. Я хочу поделиться с людьми небольшим, но очень удобным финтом.

VirtualBox, как большинство современных VM умеет работать в так называемом headless-режиме, то есть без графической оболочки. Для доступа к консоли гостевой ОС в этом случае используется протокол VRDP.
Что мне не нравится в дефолтной схеме использования виртуальной машины. В процессе работы иногда приходится перезапускать иксы. И, как следствие этого, умирает виртуальная машина. Потом она снова нужна, снова ее запускаем, ждем когда загрузится винда — довольно муторно. Для решения этой проблемы я сделал следующее. В файл /etc/rc.local дописал следующие строчки:

su rigid -c "VBoxHeadless -a 127.0.0.1 -s WinXP" &
X :1 vt08 &
DISPLAY=":1" rdesktop-vrdp -f localhost &


Что делают эти строки. Сначала запускается сам VirtualBox в headless режиме с образом WinXP. При этом VRDP биндится только на локальный адрес 127.0.0.1 — чтобы нельзя было подключиться к морде мирт.машины извне. Затем запускается вторая копия X-сервера на восьмой консоли. И, наконец, в окружении только что запущенного X-сервера запускается VRDP-клиент в полноэкраннном режиме и подключается к уже запущенной машине.

Что в итоге я получил.

  • Виртуальная машина не привязана к моей рабочей X-сессии, можно перезапускать иксы сколько вздумается, не прерывая работу вирт.машины.
  • Морда винды рисуется на отдельную консоль в полноэкранном режиме. Есть возможность быстро переключаться между виндовой и гномьей сессиями стандартными сочетаниями: Ctrl-Alt-F7 и Ctrl-Alt-F8


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

25.05.13

Настройка fancontrol - демона управления вентиляторами компьютера

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

Шум хоть и стал меньше, меня он всё равно не устроил. Компьютер и, соответственно, корпус у меня 2006 года, поэтому что-либо совсем уж тихое найти было сложновато. Опытным путём было выяснено, что больше всего шума даёт корпусной вентилятор (для этого достаточно на секунду остановить все вентиляторы поочерёдно пальцем или другим подходящим предметом). Поскольку на вентиляторе имелся не только стандартный 3-контактный разъём, но и разъём Molex, нашлось простое решение - перекинуть контакты, так чтобы снизилось питающее вентилятор напряжение. Подробнее это можно увидеть в разделе "Подключение вентиляторов" из статьи "Конструируем систему охлаждения компьютера". Жёлтый провод я всё-же воткнул в 3-контактный разъём на положенное место, дабы следить за скоростью вращения вентилятора, о чем будет написано чуть ниже.

Вторым кандидатом на настройку стал вентилятор процессора. В BIOS я узнал, что моя материнская плата поддерживает функцию PWM - управление скоростью вращения вентилятора в зависимости от показаний температурного датчика. Простейшее трёхскоростное управление я настроил прямо из BIOS, и если оно вас устроит, то нужды настраивать fancontrol в принципе нет. Меня эти три режима не устроили, захотелось более плавного разгона вентилятора по мере нагревания процессора.

Поскольку я пользуюсь Linux (Debian 6), то и настраивать управление будем в нём.

Первым делом, установим пакет для слежения за сенсорами и запустим обнаружение сенсоров:

# apt-get install lm-sensors
# sensors-detect
Отвечаем на все вопросы буквой y. Это важно, т.к. на один из вопросов ответ по умолчанию - n. Без этого пункта у меня не находились сенсоры материнской платы.
Now follows a summary of the probes I have just done.
Just press ENTER to continue: 

Driver `it87':
* ISA bus, address 0x290
Chip `ITE IT8712F Super IO Sensors' (confidence: 9)

Driver `k8temp' (autoloaded):
* Chip `AMD K8 thermal sensors' (confidence: 9)

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
it87
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!
Теперь можно заглянуть в /etc/modules и проверить, появились ли там новые модули, добавленные sensors-detect.

Чтобы не перезагружать систему, загрузим эти модули вручную. У меня был добавлен модуль it87, поэтому я подгружаю его:
# modprobe it87
Теперь можно посмотреть информацию, предоставляемую сенсорами:
$ sensors

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:  +32.0°C                                    

it8712-isa-0290
Adapter: ISA adapter
in0:         +1.07 V  (min =  +0.00 V, max =  +4.08 V)   
in1:         +2.58 V  (min =  +0.00 V, max =  +4.08 V)   
in2:         +3.33 V  (min =  +0.00 V, max =  +4.08 V)   
in3:         +2.21 V  (min =  +0.00 V, max =  +4.08 V)   
in4:         +3.02 V  (min =  +0.00 V, max =  +4.08 V)   
in5:         +1.76 V  (min =  +0.00 V, max =  +4.08 V)   
in6:         +2.00 V  (min =  +0.00 V, max =  +4.08 V)   
in7:         +2.35 V  (min =  +0.00 V, max =  +4.08 V)   
Vbat:        +4.08 V
fan1:          0 RPM  (min =    0 RPM, div = 8)
fan3:       1670 RPM  (min =    0 RPM, div = 8)
temp1:       +25.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:       +29.0°C  (low  = +127.0°C, high = +60.0°C)  sensor = thermistor
temp3:       +70.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
cpu0_vid:   +1.100 V
У меня есть сенсоры температуры на процессоре и на материнской плате (не знаю, в каких именно местах).

Теперь установим пакет для управления скоростью вращения вентиляторов.
# apt-get install fancontrol
И запустим программу для автоматизированной настройки fancontrol:
# pwmconfig
Программа сразу после запуска сообщает информацию об обнаруженных ею сенсорах температуры, устройствах управления вентиляторами и сенсорах скорости вращения вентиляторов:
Found the following devices:
hwmon0/device is k8temp
hwmon1/device is it8712

Found the following PWM controls:
hwmon1/device/pwm1
hwmon1/device/pwm2
hwmon1/device/pwm3

Giving the fans some time to reach full speed...
Found the following fan sensors:
hwmon1/device/fan1_input     current speed: 2556 RPM
hwmon1/device/fan3_input     current speed: 1654 RPM
Лучше всего сразу куда-нибудь скопировать эту информацию, чтобы понимать, что за устройства программа имеет в виду, когда спрашивает вас о чём-то. Например, для меня было важно, что hwmon0/device - это процессор, а hwmon1/device - это материнская плата.

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

У меня было обнаружено только одно соответствие:
Testing pwm control hwmon1/device/pwm1 ...
hwmon1/device/fan1_input ... speed was 2556 now 0
It appears that fan hwmon1/device/fan1_input
is controlled by pwm hwmon1/device/pwm1
После этого программа предложила составить таблицу соответствия между значениями управляющего байта (от 0 до 255) и скоростью вращения вентилятора:
Would you like to generate a detailed correlation (y)?
Я ответил утвердительно.
PWM 255 FAN 2596
PWM 240 FAN 2596
PWM 225 FAN 2556
PWM 210 FAN 2556
PWM 195 FAN 2556
PWM 180 FAN 2556
PWM 165 FAN 2596
PWM 150 FAN 2556
PWM 135 FAN 2556
PWM 120 FAN 2596
PWM 105 FAN 2596
PWM 90 FAN 2596
PWM 75 FAN 2556
PWM 60 FAN 2556
PWM 45 FAN 2445
PWM 30 FAN 2280
PWM 28 FAN 2250
PWM 26 FAN 2191
PWM 24 FAN 2163
PWM 22 FAN 2109
PWM 20 FAN 2057
PWM 18 FAN 1985
PWM 16 FAN 1917
PWM 14 FAN 1834
PWM 12 FAN 1721
PWM 10 FAN 1622
PWM 8 FAN 1493
PWM 6 FAN 1339
PWM 4 FAN 1171
PWM 2 FAN 964
PWM 0 FAN 0
Fan Stopped at PWM = 0
Программа не обнаружила, каким из вентиляторов управляло устройство hwmon1/device/pwm2 и спросила меня, слышал или видел ли я, что какой-то из вентиляторов во время теста останавливался.
Did you see/hear a fan stopping during the above test (n)?
Я этого не видел и не заметил уменьшения шума, поэтому ответил n.

То же самое произошло и с устройством hwmon1/device/pwm3. Я также ответил n.

Затем программа говорит о том, что программа fancontrol может следить за температурой устройств, управляя скоростью вращения вентиляторов. pwmconfig предлагает мне настроить fancontrol. Я соглашаюсь.
The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)?
Задаёт вопрос о том, где должен находиться файл конфигурации fancontrol. Можно нажать enter и тем самым согласиться на предложенный файл, а можно ввести другое имя файла.
What should be the path to your fancontrol config file (/etc/fancontrol)?
Дальше программа предлагает настроить устройство управления только одним из вентиляторов, для которого установлено соответствие канала управления и сенсора скорости вращения.
Select fan output to configure, or other action:
1) hwmon1/device/pwm1  3) Just quit       5) Show configuration
2) Change INTERVAL     4) Save and quit
Пункт 2 позволяет настроить периодичность проверки температуры и коррекции скорости вращения.

Пункт 3 позволяет просто выйти.

Пункт 4 - сохранить настройки и выйти.

Пункт 5 - показать конфигурацию.

Выбираем пункт 1, чтобы указать, какой из сенсоров температуры следует использовать для управления вентилятором. У меня таких сенсоров 4, я выбираю первый из них, который соответствует сенсору температуры на процессоре.
Select a temperature sensor as source for hwmon1/device/pwm1:
1) hwmon0/device/temp1_input
2) hwmon1/device/temp1_input
3) hwmon1/device/temp2_input
4) hwmon1/device/temp3_input
5) None (Do not affect this PWM output)
select (1-n):
Остальные сенсоры - это сенсоры температуры на материнской плате. Их положение мне неизвестно, да и управлять больше у меня нечем, кроме как скоростью вращения вентилятора на процессоре. Есть ещё корпусной вентилятор, но он, судя по тестам pwmconfig, фактически не управляется.

Дальше нужно ответить на несколько простых вопросов. Нам понадобится составленная выше таблица зависимости скорости вращения вентилятора от значения управляющего сигнала и немного здравого смысла. Судя по таблице, вентилятор работает на максимальной скорости уже при значении сигнала управления 105. Останавливается он при значении 2, а запускается при значении 4 (это я смог узнать только пробуя разные значения этого параметра в конфигурации fancontrol).

Как я выбирал предельные температуры? Очень просто - температура воздуха дома сейчас около 30 градусов Цельсия (на системнике висит магнит с термометром). Не вижу смысла насиловать кулер, заставляя его охлаждать процессор простым обдувом комнатным воздухом до 30 градусов или ниже - это просто невозможно. Накидываю 5 градусов и считаю такую температуру процессора нормальной. Пока температруа процессора ниже 35 градусов, включать охлаждение особого смысла нет. Включать его на полную мощность следует только при той температуре, при которой BIOS начнёт предупреждать о перегреве звуковым сигналом. У меня это 60 градусов Цельсия. Пока не достигнута эта температура, разгоняем вентилятор плавно, не в полную силу.

Enter the low temperature (degree C)
below which the fan should spin at minimum speed (20): 35
Указать самую высокую температуру, выше которой вентилятор должен включаться на полную мощность.
Enter the high temperature (degree C)
over which the fan should spin at maximum speed (60): 60
Минимальное значение канала управления, при котором вентилятор останавливается.
Enter the minimum PWM value (0-255)
at which the fan STOPS spinning (press t to test) (100): 2
Минимальное значение канала управления, при котором вентилятор начинает вращаться.
Enter the minimum PWM value (4-255)
at which the fan STARTS spinning (press t to test) (150): 4
Значение канала управления, если температура ниже минимальной.
Enter the PWM value (0-4) to use when the temperature
is below the low temperature limit (0): 0
Значение канала управления, если температура выше максимальной.
Enter the PWM value (4-255) to use when the temperature
is over the high temperature limit (255): 105
Теперь можно посмотреть конфигурацию (пункт 5) или сохранить изменения и закончить настройку (пункт 4). Можно снова ответить на вопросы, выбрав канал управления из списка.

Все эти настройки вносятся в файл /etc/fancontrol, где их можно отредактировать вручную:
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=5
DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon1=devices/platform/it87.656
DEVNAME=hwmon0=k8temp hwmon1=it8712
FCTEMPS= hwmon1/device/pwm1=hwmon0/device/temp1_input
FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP= hwmon1/device/pwm1=35
MAXTEMP= hwmon1/device/pwm1=60
MINSTART= hwmon1/device/pwm1=4
MINSTOP= hwmon1/device/pwm1=2
MAXPWM=hwmon1/device/pwm1=105
Осталось только запустить службу fancontrol и вентиляторы будут управляться автоматически:
# /etc/init.d/fancontrol start
Самое главное, что нужно от pwmconfig - это установить соответствие между сенсорами скорости вращения вентилятора, температуры и каналом управления скоростью вращения вентилятора. Остальное можно настраивать уже простым редактированием файла /etc/fancontrol с последующим перезапуском демона fancontrol. Следить за индикаторами можно с помощью команд watch sensors. Именно таким образом я настроил подходящие параметры fancontrol.

С такими настройками я могу редактировать тексты при полностью остановленном вентиляторе. При полной загрузке процессора температура его поднимается до 45 градусов и держится на этом уровне стараниями fancontrol.

Я пользуюсь XFCE и нашёл для него два интересных плагина для более удобного наблюдения за температурой и процессором: xfce4-cpufreq-plugin и xfce4-sensors-plugin.

Установим их вместе с другими рекомендованными пакетами:
# apt-get install xfce4-cpufreq-plugin xfce4-sensors-plugin xsensors hddtemp cpufreq
Дальше их нужно просто добавить в панель и настроить. Всё это делается через меню панели.

Рядом с двумя индикаторами температур (процессора и жёсткого диска) удобно разместился индикатор текущей частоты процессора. Мой процессор умеет вдвое уменьшать свою рабочую частоту, когда он не сильно загружен - с 2 Гигагерц до 1 Гигагерца.

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

После всех этих манипуляций самым громким источником шума стал старенький жёсткий диск Seagate на 4,3 Гигабайта, на котором у меня установлена Windows XP. Во время работы он издаёт раздражающий свист. Осталось перенести Windows XP на менее шумный жёсткий диск WD на 1 Терабайт, где у меня установлена основная система - Debian GNU/Linux 6.0.

Вот пример одного из моих /etc/fancontrol:
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon0=devices/pci0000:00/0000:00:18.3 hwmon1=devices/platform/w83627ehf.656
DEVNAME=hwmon0=k10temp hwmon1=w83627ehf
FCTEMPS=hwmon1/device/pwm2=hwmon0/device/temp1_input
FCFANS= hwmon1/device/pwm2=hwmon1/device/fan2_input
MINTEMP=hwmon1/device/pwm2=40
MAXTEMP=hwmon1/device/pwm2=60
MINSTART=hwmon1/device/pwm2=150
MINSTOP=hwmon1/device/pwm2=0
расшифровка переменных такая:
INTERVAL - интервал (в секундах), с которым демон Fanconfig просыпается и перенастраивает скорость вращения вентиляторов, в зависимости от температуры
DEVPATH, DEVNAME, FCTEMPS, FCFANS - устройства, которыми управляет и которые мониторит fanconfig, в частности, в моем конфиге изменяется pwm2
в зависимости от temp1 и fan2
Дальше описывается как вести себя вентилятору:
MINTEMP - минимальная температура (если температура меньше, то скорость вращения вентилятора принимает значение MINSTOP, если равно - MINSTART)
MAXTEMP - максимальное значение температуры (если температура меньше, скорость вращения вентилятора принимает среднее значение, между максимально-возможной (параметр MAXPWM, если указан) и MINSTART, температура больше или равна MAXTEMP - вентилятор работает на полную катушку)
Параметр MAXPWM может отсутствовать, если вы выбрали значение по-умолчанию (255), во время настройки pwmconfig, он нужен чтобы ограничить максимальную скорость вращения вентилятора, независимо от его возможностей.

Мой конфиг
 dima@katty ~ $ cat /etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon1=devices/platform/it87.656
DEVNAME=hwmon1=it8712
FCTEMPS= hwmon1/device/pwm1=hwmon1/device/temp1_input
FCFANS= hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP= hwmon1/device/pwm1=40
MAXTEMP= hwmon1/device/pwm1=60
MINSTART= hwmon1/device/pwm1=90
MINSTOP= hwmon1/device/pwm1=0
MAXPWM= hwmon1/device/pwm1=210

19.05.13

настройка xterm

dima@katty ~ $ cat ~/.Xresources
xterm*faceName:PT Mono:size=12:antialias=true
xterm*font:8x14
xterm*boldMode:false
xterm*metaSendsEscape:true
xterm*altSendsEscape:true
xterm*keepSelection:true
xterm*borderWidth:0
xterm*color1: #9e1828
xterm*color9: #cf6171
xterm*color2: #30c030
xterm*color10: #c5f779
xterm*color3: #968a38
xterm*color11: #fff796
xterm*color4: #404090
xterm*color12: #67CDE9
xterm*color5: #963c59
xterm*color13: #cf9ebe
xterm*color6: #418179
xterm*color14: #71bebe
xterm*color7: #bebebe
xterm*color15: #FFFFFF
xterm*cursorColor:#d8d8d8
Xterm*saveLines: 4096
xterm*geometry: 120x32
dima@katty ~ $ xrdb -merge ~/.Xresources

18.05.13

Find out what is using your swap

Have you ever logged in to a server, ran `free`, seen that a bit of swap is used and wondered what’s in there? It’s usually not very indicative of anything, or even overly helpful knowing what’s in there, mostly it’s a curiosity thing.
Either way, starting from kernel 2.6.16, we can find out using smaps which can be found in the proc filesystem. I’ve written a simple bash script which prints out all running processes and their swap usage.
It’s quick and dirty, but does the job and can easily be modified to work on any info exposed in /proc/$PID/smaps
If I find the time and inspiration, I might tidy it up and extend it a bit to cover some more alternatives. The output is in kilobytes.
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"

This will need to be ran as root for it to be able to gather accurate numbers. It will still work even if you don’t, but it will report 0 for any processes not owned by your user.
Needless to say, it’s Linux only. The output is ordered alphabetically according to your locale (which admittedly isn’t a great thing since we’re dealing with numbers), but you can easily apply your standard shell magic to the output. For instance, to find the process with most swap used, just run the script like so:
$ ./getswap.sh | sort -n -k 5
Don’t want to see stuff that’s not using swap at all?
$ ./getswap.sh | egrep -v "Swap used: 0" |sort -n -k 5
… and so on and so forth

14.05.13

Скачиваем сайты целиком - утилита wget

wget — это утилита, которая предназначена для загрузки файлов по сети (из интернета). Я расскажу, как использовать wget, чтобы скачивать сайты из интернета целиком и затем просматривать их в автономном режиме.
С помощью wget можно скачивать сайты, включая картинки, всего лишь указав адрес сайта и определенные параметры. wget будет автоматически переходить по ссылкам на сайте и скачивать страницу за страницей. Рассмотрим несколько примеров от простых к более сложным использования wget для скачивания сайтов.
Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
wget -r -k -l 7 -p -E -nc http://site.com/
После выполнения данной команды в директорию site.com будет загружена локальная копия сайта http://site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html.
Рассмотрим используемые параметры:
-r указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
-k используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
-p указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
-l определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
-E добавлять к загруженным файлам расширение .html.
-nc при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

Мы рассмотрели лишь одно из возможных применений утилиты wget. На самом деле область применения wget значительно шире и wget обладает большим числом дополнительных параметров. За более подробной информацией обращайтесь к руководству, выполнив в командной строке: man wget.