Показаны сообщения с ярлыком unix. Показать все сообщения
Показаны сообщения с ярлыком unix. Показать все сообщения

14 июня 2012 г.

unix: lsof

Использование утилиты lsof в unix:


1. Просмотр всех соединений IPv4
$ lsof -i 4 -a

2. Просмотр всех соединений IPv4, открытых процессом с PID = 1234
$ lsof -i 4 -a -p 1234

3 .Список открытых файлов на устройстве /dev/sda1
$ lsof /dev/sda1

4. Кто не отдаёт cdrom
$ lsof /dev/cdrom

5. Список всех файлов открытых юзером
$ lsof -u guppi

6. Какой процесс использует данный файл?
$ lsof /etc/passwd

7. Какие ресурсы использует процесс?
$ lsof -c mc
или
$lsof -p pid




12 июня 2012 г.

aix: настройка iSCSI инициатора в AIX 5.3

Wiki: http://en.wikipedia.org/wiki/ISCSI

В 2-х словах:
- позволяет подключать диски к серверу по Ethernet,
- target - сервер, который предоставляет дисковое пространство,
- initiator - клиент, который использует дисковое пространство.

1. Настройка инициатора
Настроить можно с помощью smit

1) Выберите Devices.
2)  Выберите  iSCSI.
3)  Выберите  iSCSI Protocol Device.
4)  Выберите  Change / Show Characteristics of an iSCSI Protocol Device.
Выберите устройство, которое ассоциировано с iSCSI инициатором, например, iscsi0.
Задайте Initiator Name (IQN), это имя  задается по определённому формату (см. Wiki).
Придумаем следующее имя: iqn.2012-06.com.test
Это имя используется при подсоединению к  iSCSI target.

Сохраняем настройки.

Сообщаем администратору target сервера наш iqn (iqn.2012-06.com.test).

В ответ он должен, сконфигурировать CHAP авторизацию для нашего инициатора, и прислать ip- адрес, iqn - имя таргета и пароль для CHAP авторизации.
Например:
ip - 192.168.0.1,
iqn - iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb
password - iscsi_password

После этого редактируем на инициаторе файл /etc/iscsi/targets, а именно добавляем наш таргет для CHAP авторизации, примеры есть в самом файле /etc/iscsi/targets:
192.168.0.1    3260   iqn.2000-01.com.hp:storage.p1000g4.5001caf1eb    "iscsi_password"


Сохраняем файл и переходим к п.2

2. Подключение диска

Если мы всё сделали правильно в п.1 и настроена маршрутизация между клиентом и сервером, то:
1) Вводим команду:
$ cfgmgr -v -l iscsi0

При вводе этой команды драйвер попытается соединиться с целевыми устройствами, перечисленными в файле /etc/iscsi/targets, и определить новый жесткий диск (hdisk) для всех LUN на найденных целевых устройствах.

2) Проверяем, что новый жесткий диск определился:
$ lsdev -Ccdisk |grep iSCSI
hdisk6      Available              Other iSCSI Disk Drive

$ lspv hdisk6

$ lsattr -El hdisk6

3) Cделаем volume group, где iscsivg - имя группы, которое придумываем сами:
$ mkvg -y iscsivg hdisk6

4) Информация о группе, смотрим на Total PPs, чтобы знать какого размера делать логический volume(-мы):
$ lsvg iscsivg

Посмотреть какие логические volume(-мы) уже есть
$ lsvg -l iscsivg

5) Создаем logical volume, где
iscsi_vol01 - имя нового logical volume,
jfs2 - тип файловой системы,
3715 - размер  logical volume  (Total PPs из предыдущей команды п.4) 

$ mklv -t jfs2 -y iscsi_vol01 iscsivg 3715

6)  Включаем Auto Varyon = No, делаем это потому что функция varyonvg после рестарта выполняется раньше, чем инициализируется tcp/ip ( сам не проверял порядок )

$ chvg -a n iscsivg

7) Создаем файловую систему на volume, где
-d iscsi_vol01 - на какой волуме,
-m /mnt/iscsifs - точка монтирования
-A no - не монтировать файловую систему после рестарта,
-a logname=INLINE  - jfs2 лог на том же волуме что и сама файловая jfs2:

$ crfs -v jfs2 -d iscsi_vol01 -m /mnt/iscsifs -A no -u iscsi -a logname=INLINE

8) Монтируем


$ mount /mnt/iscsifs


3. Монтирование после рестарта


1) Проверяем
$ lspv

2) Включаем группу
$ varyonvg iscsivg

3) Монтируем
$ mount /mnt/iscsifs


13 апреля 2012 г.

aix: команда errpt, отчёт об ошибках


Команда errpt ( см. man errpt)

Примеры использования:

# посмотреть детальные ошибки за указанный период времени( формат даты mmddhhmmyy)
# -s start_date, -e end_date
$ errpt -a  -s 0604090601  -e 0605090901 | more  
$ errpt -aD -s 0412010012 -e 0412023012 > /tmp/error.log

# посмотреть все ошибки определённого Resource Name, например SYSPROC или SYSVMM
$ errpt -a  -N SYSPROC |more
$ errpt -a  -N SYSVMM  > /tmp/err.log

# посмотреть ошибку по её идентификатору
$ errpt -j 5DFED6F1

# посмотреть менее детальный (чем errpt -a) список ошибок. AIX5 ONLY !!!!
$ errpt -A

# исключить дублирующиеся ошибки. AIX5 ONLY !!!!
$ errpt -D | more
$ errpt -aD | more  

aix: кто логинился в систему? команда last, файл wtmp


1. last - утилита, показывает, кто логинился к системе (см. man last)

В AIX эти данные хранятся в бинарном файле /var/adm/wtmp

2. Очистка содержимого /var/adm/wtmp

Иногда /var/adm/wtmp надо чистить:
$ /usr/sbin/acct/nulladm /var/adm/wtmp



aix: sar


Команда sar собирает статистическую информацию о работе системы.

Для того чтобы запустить команду, которая собирает статистическую информацию о работе системы и сразу же выводит ее на экран, введите:

$ sar -u 2 5

17:58:15    %usr    %sys    %wio   %idle
17:58:17      43       9       1      46
17:58:19      35      17       3      45
17:58:21      36      22      20      23
17:58:23      21      17       0      63
17:58:25      85      12       3       0

Average       44      15       5      35

где 2 - интервал опроса в секундах, 5 - кол-во опросов

В папке /var/adm/sa/ хранятся логи в бинарном виде за 31 день.
Чтобы посмотреть за 22-е число месяца лог нужно:

$ sar -f /var/adm/sa/sa22 -s 14:20 -e 15:00
, где -f указывает путь к логу (подробнее см. man sar)

24 февраля 2012 г.

unix: посмотреть зависимости библиотеки (ldd)


Команда ldd

Есть какая то shared library (например libCSGcsvPP.so), нужно посмотреть её зависимости:
$ ldd libCSGcsvPP.so
libCSGcsvPP.so needs:
         /dm/appl/BDDM/lib/libMECS.so
         /usr/lib/libthread.a(shr.o)
         /usr/lib/libC.a(shr.o)
         /usr/lib/libC.a(ansi_32.o)
         /usr/lib/libc.a(shr.o)
         /usr/lib/lib++.so
         /u01/app/oracle/product/9.2.0.5.0/lib/libclntsh.a(shr.o)
         /usr/lib/libpthreads.a(shr_xpg5.o)
         /usr/lib/librtl.a(shr.o)
         /usr/lib/libc_r.a(shr.o)
         /usr/lib/libC.a(ansicore_32.o)
         /usr/lib/libC.a(shrcore.o)
         /usr/lib/libC.a(shr2.o)
         /usr/lib/libC.a(shr3.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)
         /usr/lib/libdl.a(shr.o)
         /usr/lib/libodm.a(shr.o)
         /usr/lib/libc.a(aio.o)
         /usr/lib/libpthreads.a(shr_comm.o)

16 ноября 2011 г.

CPU Info

Platform Command(s)
AIX lparstat -i
FreeBSD sysctl hw.model
HP/UX ioscan -fnC processor
Linux cat /proc/cpuinfo
Mac OS X system_profiler SPHardwareDataType
SCO OpenServer 5 hw
uname -X
SCO Unixware 7 psrinfo -v
Solaris SPARC kstat > /tmp/kstat.output
Solaris x86 uname -X
Tru64 psrinfo -v

18 октября 2011 г.

vmstat

1. vmstat в реальном времени

(число идущее после vmstat означает сколько раз вывести информацию)
# vmstat 1

System configuration: lcpu=2 mem=3920MB

kthr    memory                page              faults          cpu
-----  -----------    ------------------------ ------------  -----------
r  b    avm   fre    re  pi  po  fr   sr  cy  in   sy  cs   us sy id wa
0  0  229367 332745   0   0   0   0    0   0   3  198  69    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   3   33  66    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   2   33  68    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0  80  306 100    0  1 97  1
0  0  229367 332745   0   0   0   0    0   0   1   20  68    0  0 99  0
0  0  229367 332745   0   0   0   0    0   0   2   36  64    0  0 99  0

*  r -- Среднее число выполняемых ядром потоков за временной интервал, который Вы выбрали.
*  b -- Среднее число потоков, которые ждут своей очереди на выполнение в виртуальной памяти в течение заданного Вами промежутка времени. r всегда должен быть выше чем b; если нет, то в обычном случае это означает то, что слабым местом, давшим сбой, является центральный процессор.
* fre -- размер свободной памяти. Не волнуйтесь, если он окажется маленьким короткий. Главное - определить, происходит ли разбиение этой небольшой свободной памяти на страницы.
* pi -- Страницы, подкачанные в физическую память из виртуальной.
* po -- Страницы, откачанные из физической памяти в виртуальную.
* CPU сегменты:
    *   us -- время пользователя
    * sy -- системное время
    * id -- время простоя
    * wa --ожидание ввода/вывода

2. Различная статистика
$ vmstat -v
              2031616 memory pages
              1974804 lruable pages
               549549 free pages
                    1 memory pools
               141346 pinned pages
                 80.1 maxpin percentage
                 20.0 minperm percentage
                 80.0 maxperm percentage
                 30.7 numperm percentage
               608228 file pages
                  0.0 compressed percentage
                    0 compressed pages
                 26.9 numclient percentage
                 80.0 maxclient percentage
               531937 client pages
                    0 remote pageouts scheduled
                17011 pending disk I/Os blocked with no pbuf
                    0 paging space I/Os blocked with no psbuf
                 4849 filesystem I/Os blocked with no fsbuf
                    0 client filesystem I/Os blocked with no fsbuf
                    3 external pager filesystem I/Os blocked with no fsbuf

aix: top processes by memory usage

1. Процессы, уоторые отъедают больше всего памяти
Выводит список процессов отсортированных по использованию памяти(2й столбец vsz)

ps -ef -o pid,vsz,comm |sort -nr +1

vsz - объём памяти в кб

1 сентября 2011 г.

bash: специальные параметры

Специальные параметры

Параметр    Правила замены

*    Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то этот параметр заменяется на одно единственное слово, составленное из всех позиционных параметров, разделенных первым символом специальной переменной IFS (о ней будет сказано ниже). То есть ``$*'' эквивалентно ``$1c$2c...'', где c - первый символ в значении переменной IFS. Если IFS присвоено пустое значение или ее значение не установлено, параметры разделяются пробелами

@    Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то каждый параметр заменяется отдельным словом. Так, ''$@'' эквивалентно ''$1'' ''$2'' ... Если позиционных параметров нет, то значение не присваивается (параметр @ просто удаляется)

#    Заменяется десятичным значением числа позиционных параметров

?    Заменяется статусом выхода последнего из выполнявшихся на переднем плане программных каналов

-(дефис)    Заменяется текущим набором значений флагов, установленных с помощью встроенной команды set или при запуске самой оболочки

$    Заменяется идентификатором процесса (PID) оболочки

!    Заменяется идентификатором процесса (PID) последней из выполняющихся фоновых (асинхронно выполнявшихся) команд

0    Заменяется именем оболочки или запускаемого скрипта. Если bash запускается для выполнения командного файла, $0 равно имени этого файла. В противном случае это значение равно полному пути к оболочке

bash: условные выражения

# -a file
Верно, если файл с именем file существует.

# -b file
Верно, если file существует и является специальным файлом блочного устройства.

# -c file
Верно, если file существует и является специальным файлом символьного устройства.

# -d file
Верно, если file существует и является каталогом.

# -e file
Верно, если файл с именем file существует.

# -f file
Верно, если файл с именем file существует и является обычным файлом.

# -g file
Верно, если файл с именем file существует и для него установлен бит смены группы.

# -h file или -L file
Верно, если файл с именем file существует и является символической ссылкой.

# -k file
Верно, если файл с именем file существует и для него установлен "sticky'' bit.

# -p file
Верно, если файл с именем file существует и является именованным каналом (FIFO).

# -r file
Верно, если файл с именем file существует и для него установлено право на чтение

# -s file
Верно, если файл с именем file существует и его размер больше нуля.

# -t fd
Верно, если дескриптор файла fd открыт и указывает на терминал.

# -u file
Верно, если файл с именем file существует и для него установлен бит смены пользователя.

# -w file
Верно, если файл с именем file существует и для него установлено право на запись.

# -x file
Верно, если файл с именем file существует и является исполняемым.

# -O file
Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя.

# -G file
Верно, если файл с именем file существует и принадлежит группе, определяемой эффективным идентификатором группы.

# -S file
Верно, если файл с именем file существует и является сокетом.

# -N file
Верно, если файл с именем file существует и изменялся с тех пор, как был последний раз прочитан.

# file1 -nt file2
Верно, если файл file1 имеет более позднее время модификации, чем file2.

# file1 -ot file2
Верно, если файл file1 старше, чем file2.

# file1 -ef file2
Верно, если файлы file1 и file2 имеют одинаковые номера устройств и индексных дескрипторов (inode).

# -o optname
Верно, если задействована опция оболочки optname. Пояснения см. на странице man bash.

# -z string
Верно, если длина строки равна нулю.

# -n string
Верно, если длина строки не равна нулю.

# string1 == string2
Верно, если строки совпадают. Вместо == может использоваться =.

# string1 !== string2
Верно, если строки не совпадают.

# string1 < string2
Верно, если строка string1 лексикографически предшествует строке string2 (для текущей локали).

# string1 > string2
Верно, если строка string1 лексикографически стоит после строки string2 (для текущей локали).

# arg1 OP arg2
Здесь OP - это одна из операций арифметического сравнения: -eq (равно), -ne (не равно), -lt (меньше чем), -le (меньше или равно), -gt (больше), -ge (больше или равно). В качестве аргументов могут использоваться положительные или отрицательные целые.

# !(expression)
Булевский оператор отрицания.

# expression1 -a expression2
Булевский оператор AND (И). Верен, если верны оба выражения.

# expression1 -o expression2
Булевский оператор OR (ИЛИ). Верен, если верно любое из двух выражений.
 

14 апреля 2011 г.

unix: tar

1. Создать
tar -cvf file.tar /full/path - создать .tar

tar -czvf file.tar.gz /full/path - создать .tar.gz (архив)
tar -cjvf file.tar.bz2 /full/path - создать .tar.bz2 (архив)

Синтаксис этих примеров:
tar [-ключи] [название архива] [путь, что запаковать]

10 марта 2011 г.

unix: find

1. Найти файлы старше 5 дней:
$ find . -mtime +5

2. Получить информацию о файле( размер, дата доступа, владелец и т.д.) можно с помощью опции -printf  "%параметр" (см. man find)
Например:
$ find test.pl -printf "%s"    покажет размер файла test.pl
$ find test.pl -printf "%u"    покажет владельца
и т.д.

17 февраля 2011 г.

unix: kill all procceses


Убить процессы:
$ kill -9 `ps -ef|grep DUPdelete|grep -v grep|awk ‘{print $2}’`

где DUPdelete - имя процесса, который нужно убить