Несколько скриптов-однострочников для быстрого взгляда на то, как используется память в Solaris:

Физическая память:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /physmem/ { print "Physical memory = " $2 * pgsize/1073741824 "Gb"}'

Память ядра:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /pp_kernel/ { print "Kernel memory = " $2 * pgsize/1073741824 "Gb"}'

Разделяемая (shared) память:
ipcs -mb | awk '/^m/ {sm=sm+$7}END{ print "Shared memory " sm/1073741824 "Gb"}'

Свободная память:
kstat -n system_pages | nawk 'BEGIN{ "/usr/bin/pagesize" | getline pgsize ; } /freemem/ { print "Free memory = " $2 * pgsize/1073741824 "Gb"}'

И еще, если присмотреться, то можно увидеть, как в awk можно выполнить команду shell и прочитать ее вывод ;)

Updated: 29.09.2009/Добавлен однострочник для свободной памяти. Вообщем-то получился не плохой скриптик — все однострочники в одном файле:
solarismem
Пример вывода:
# ./solarismem.sh
Physical memory = 31.2031Gb
Kernel memory = 3.29826Gb
Shared memory 12.9697Gb
Free memory = 13.5944Gb

И снова grep

05.08.2009

Иногда есть данные и шаблоны, и чтобы выбрать данные — обычно используют цикл, в котором грепают по шаблону. Но тут недавно внимательно перечитал man grep и нашел интересный момент ;) Можно в одну команду вывести список строк, которые попадают (или не попадают) под шаблон

cat data.txt
111
222
333
112
122
233
444

cat template.txt
2
1

/usr/xpg4/bin/grep -f template.txt data.txt
111
222
112
122
233

Или не попадают
/usr/xpg4/bin/grep -v -f template.txt data.txt
333
444

Для чего это можно использовать? Ну например, список новых томов в VxVM, список новых файлов в каталоге — удобно динамически формировать список и сравнивать его со старым списком.

Старый дедовский способ достаточно быстро забакапить файловую систему ufs.

Способ поднятый из манов ;) Решил запостить, чтобы легче было искать.

Но и вдруг кому пригодится? ;)

Читать полностью »

Ну и в продолжении предыдущей статьи добавляю сюда еще и скрипт для создания клона загрузочного диска в VxVM. Таким образом, если загрузочные диски под веритасом, можно пользоваться этим скриптом. В основе скрипта лежит блюпринт сановский Toward a Reference Configuration for VxVM Managed Boot Disks. Но скрипт творчески переработан в части выбора томов для зеркалирования.
Для инициализации нужно в VxVM инициализировать диск, и назвать его clone.
Ну например, так:

vxdisksetup -i c6t0d0s2
vxdg -g rootdg adddisk clone=c6t0d0s2

Для выбора томов, для зеркалирования на клон-диск, следует поправить в скрипте секцию
VOLUMES="rootvol:0:clone-rootvol:0x01:0x00 \
swapvol:1:clone-swapvol:0x03:0x01 \
var:5:clone-var:0x07:0x00 \
coredump:6:clone-coredump:0x00:0x00"

Качаем скрипт vxclonedisk

О необходимости живого и загружабельного клона root-диска, надеюсь, никому объяснять не надо.

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

Компания Sun Microsystems (Ныне принадлежащая Oracle) настойчиво рекомендует использовать Solaris Volume Manager для загрузочных устройств. Он достаточно прост в управлении и стоит ноль рублей ноль копеек.

Автором сайта, с моей подачи, был разработан шелл-скрипт, который создает клон рутового диска без особых усилий, нужно только выставить правильные настройки в самом начале скрипта.  Скрипт размечает диск, последовательно копирует разделы, чекает их fsck, правит vsftab,  пишет деятельность в лог.

Скрипт проверен лично мной на живой системе и отдан в продуктив.
Качаем скрипт makeclonesvm

На днях пришлось анализировать два Sun Explorer-а, собранных с одного сервера с периодом в полгода. Так как ничего unix-ового под рукой не было, то попробовал с ходу найти программку, которая сравнивает 2 каталога и выводит отсутствующие файлы и сообственно различия. Вот… сходу бесплатных утилит не нашлось, пришлось написать на perl. Итак, скрипт, который

    находит файлы, отсутствующие во втором каталоге
    находит файлы, отличающиеся по дате модификации и размеру
    находит файлы, отличающиеся по содержанию

Так как написан на perl, то под Windows требует установленного perl (ActivePerl, например) или можно скачать скомпилированный бинарник.

Читать полностью »

Очень часто смотришь на текст какого-нибудь awk или sed скрипта и понимаешь, что ничего в нем не понимаешь ;) Куча каких-то непонятных предопределеннх переменных, неадекватный синтаксис… Чтобы быть во всеоружии — нужно под рукой всегда иметь шпаргалку ;)
Очень полезные шпаргалки по awk и sed. Взяты отсюда.

Ну и в догонку — отличная подборка односточников на awk [локальная копия]. В комплекте со «шпаргалкой по AWK» получается отличный набор продвинутого awk-программера ;)

Достаточно часто приходится генирировать последовательности в shell. Например, создать 10 файлов с разными именами, или переименовать, или добавить в vxvm диски, присвоив им новые имена, или отформатировать последовательно диски с командной строки на дисковом массиве, ну и т.д. Самый простой и правильный способ — это использовать команду seq, но к сожалению, ее в solaris по умолчанию нет.
Итак, несколько примеров, как напечатать цифры от 1 до 10:

Эти генерилки работают везде
$ i=0; while [ $i -lt 11 ]; do echo $i; i=`expr $i + 1` ; done
$ for i in  1 2 3 4 5 6 7 8 9 10; do echo $i; done
$ perl -e 'print "$_\n" foreach(1..10)'

Эта работает только в bash
$ for (( i = 1; i < 11; i++ )); do echo $i; done

а эта только в linux
$ seq 1 10

Как в Solaris вычислить md5 файлика, если не установлена утилитка md5sum (обычно идет в состве gnu textutils)?
На это есть стандартная утилитка digest:

$ digest -v -a md5 /usr/bin/vi
md5 (/usr/bin/vi) = e4e3588c5212903847c66d36b1a828a5

Также доступны и другие алгоритмы:

$ digest -l
sha1
md5
sha256
sha385
sha512

Напоминалка опций unix команды find

Напоминалка опций unix команды find теперь и на русском языке. Удобный online интерфейс поможет вспомнить самые нужные опции и построить свою команду для поиска файлов.
Как и было обещано, перевел свой скриптик на русский язык, добавил немножко ссылок на русскоязычные документы по синтаксису команды, исправил несколько ошибок.

Update: 2013.08.02 Переехал на новый домен, изменился интерфейс и главное — напоминалка опций не только для find, но и для grep, fuser, итд