Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Утилиты и приёмы

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

(Честно говоря, информация стала уже слишком разношёрстна, надо бы её уже разделить на несколько страниц, но всё руки не дойдут.)

Синхронизация времени по NTP

ntpdate 2.ru.pool.ntp.org

ssh, ssh-keygen, scp, openssl

Удалённый запуск программ

Допустим надо запустить программу от пользователя script на хосте down. Делается это очень просто:

ssh script@down /usr/home/script/bin/prog --prog-params

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

ssh, авторизация по ключу, а не по паролю

Если у вас нет открытого ключа, то создаём его:

cd ~/.ssh
ssh-keygen -t dsa

Теперь у вас есть открытый ключ.

Заходим на удалённый хост и добавляем ваш ключ к списку авторизованных ключей:

ssh script@down # у вас запросят пароль
scp you@yourhost:~/.ssh/id_dsa.pub ~/.ssh/temp
cat ~/.ssh/temp >> ~/.ssh/authorized_keys
rm ~/.ssh/temp

Теперь ssh будет пускать пользователя you с хоста yourhost на хост down пользователем script без пароля. То есть при запуске скриптов, как показано выше, пароль запрашиваться не будет.

Генерация паролей

Очень удобный способ генерации паролей:

openssl rand -base64 24

Генерация md5-суммы

Для генерации md5-сумм существуют отдельные утилиты (под FreeBSD — md5, под Linux — md5sum), но выдают информацию в разных форматах. openssl — более универсальный метод:

openssl md5 файл

Шифрование

Зашифровать файл:

openssl enc -aes-256-cbc -salt -in входной_файл -out зашифрованный_файл

Эта команда дважды спросит пароль для шифрования.

openssl enc -d -aes-256-cbc -in зашифрованный_файл -out расшифрованный_файл

Спросит пароль.

Того же самого эффекта можно доиться, управляя стандартными потоками:

# шифруем
openssl enc -aes-256-cbc -salt < входной_файл > зашифрованный_файл
# расшифровываем
openssl enc -d -aes-256-cbc < зашифрованный_файл > расшифрованный_файл

Полезный пример:

# создаём защищённый паролем tar-архив
tar czf - your_dir | openssl enc -aes-256-cbc -salt >file.tgz
# распаковываем этот архив
openssl enc -d -aes-256-cbc < file.tgz | tar xzf -

Консоль

Бывает, что перестают работать консоли, выдаётся сообщение вида:

subshell.c: read (subshell_pty...): No such file or directory

Решается проблема просто:

killall -CONT bash

Создание patch'ей

Создать patch:

diff старый_файл новый_файл > patch_файл

Наложить patch:

patch старый_файл patch_файл

Естественно порядок файлов везде важен.

FreeBSD/Linux md5/md5sum

Во FreeBSD и в Linux есть две утилиты для подсчёта md5-сумм файлов. Они выдают один а тот же результат, но в несколько разном формате, что очень неудобно, если надо сравнить файлы (по суммам), лежащие на Linux и FreeBSD машинах. Поэтому для каждой системы я написал маленький скрипт, эмитирующий поведение недостающей утилиты.

Для FreeBSD — md5sum:

!/bin/sh 
md5 -- "$@" | sed -E 's/^MD5 \((.*)\) = ([^[:space:]]+)/\2  \1/'

Для Linux — md5:

#!/bin/sh
md5sum -- "$@" | sed -r 's/^(\S+)\s+(\S+)/MD5 (\2) = \1/'

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

Информационные утилиты

Xorg

При настройке оконного интерфейса (оконного менеджера) часто оказывается необходима информация об окнах того или иного приложения. Получить её можно двумя командами xwininfo и xprop.

При настройке обработки событий (клавиатура/мышь) очень полезна бывает утилита xev.

Ядро

Посмотреть настройки ядра: sysctl -ah.

Посмотреть, что значат все эти переменные: sysctl -ad.

Посмотреть сообщения ядра: dmesg

Посмотреть окружение ядра (hint'ы): kenv

Информация о ядре и загруженных модулях: kldstat и kldstat -v.

Нагрузка на диски

Очень полезная утилита smartctl

/usr/local/sbin/smartctl -a /dev/ad4

выдаст полную информацию по указанному диску, вот лишь, некоторые поля:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   100   100   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0007   253   253   025    Pre-fail  Always       -       5760
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       77
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   253   253   015    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       5899
 10 Spin_Retry_Count        0x0033   253   253   051    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       61
194 Temperature_Celsius     0x0022   050   043   000    Old_age   Always       -       50
196 Reallocated_Event_Count 0x0032   253   253   000    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000a   100   100   000    Old_age   Always       -       0
201 Soft_Read_Error_Rate    0x000a   100   100   000    Old_age   Always       -       0
202 TA_Increase_Count       0x0032   253   253   000    Old_age   Always       -       0

На самом деле информации выдаётся на много больше.

Информация о нагрузке на диски в реальном масштабе времени: gstat и iostat -w 1.

Информация о swap'e: swapctl -lh

Информация о всех открытых файлах fstat.

Есть ещё systat.

Сеть

О сети netstat; при подъёме новых интерфейсов очень полезна netstat -i; при настройке маршрутизации — netstat -r.

При отладке новых интерфейсов полезна sockstat

Для прослушивания трафика очень полезна утилита ipsumdump. Лично мне она кажется более удобной, чем стандартные tcpdump и tcpshow.

Разное, но полезное

Очень полезная утилита lsof выдаёт список всех открытых файлов, включая сокеты, конвейеры и прочее. Она на удивление неприхотлива, и ей не требуется ни специальных возможностей ядра, ни монтирования procfs. Почему-то она не входит в минимальную установку FreeBSD.

Посмотреть, от каких библиотек зависит исполняемый файл:

ldd -f '%p\n' -a /usr/local/bin/mc | sort | uniq

Список локалей: locale -a.

Очень полезен мониторчик mbmon и его X-версия xmbmon. Он показывает температуры и вольтажи на системной плате.

Тем, кто активно пользуется MySQL очень понравится mytop — аналог top для MySQL. Эта программа не очень любит ставиться из пакетов, зачастую конфликтуя с различными DBD-модулями. Не обращайте на это внимания. Программа просто написана на Perl — скачайте и запустите скрипт — он очень неприхотлив.

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

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

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

© 1999 − 2008 Мичурин Алексей — http://www.michurin.com.ru/