The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Уважаемые знатоки Solaris, подскажите, как правильно писать ..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Уважаемые знатоки Solaris, подскажите, как правильно писать ..."
Сообщение от Acher emailИскать по авторуВ закладки on 15-Ноя-01, 00:22  (MSK)
Всем привет!
Возникла необходимость записать в файл значения некоторых полей вывода утилиты iostat.
Файл должен иметь строки вида дата/время - значение параметра util. Вот с какой проблемой я столкнулся: Пишу iostat -Dnr 1 |awk -F, '{print $6}' и при этом в консоли выводится столбец нужного мне показателя (о дате-времени пока забудем), но в файл такой вывод iostat перенаправить не удается! Делаю iostat -Dnr 1 |awk -F, '{print $6}' >> /mylog но файл остается пустым. При
этом однократный запуск iostat выводит данные в файл без проблем
(iostat -Dnr |awk -F, '{print $6}' >> /mylog работает на ура). Можно было бы, конечно,
написать скрипт и запускать его кроном каждую минуту, но подлый iostat при однократном запуске показывает почти всегда одну и ту же утилизацию, и только последующие данные представляют
действительный интерес. Итак, вопросы:
1. Как получить вывод в файл периодических счетчиков iostat?
2. Как прикрутить значение времени к каждой строчке этого файла?
Спасибо за предложения!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Vlad emailИскать по авторуВ закладки on 15-Ноя-01, 14:19  (MSK)
А знаешь почему не работает? А вот поэтому, сравни два вывода:
1.
sun2># dg=`iostat -Dnr|awk -F, '{print $6}'`
sun2># echo $dg
util 0.5
sun2>#

2.
sun2># iostat -Dnr
c0t6d0,c1t1d1,c1t1d0,c2t0d0
rps,wps,util,rps,wps,util,rps,wps,util,rps,wps,util
0,0,0.0,0,3,0.5,0,0,0.0,0,1,0.6
sun2>#

Вот когда ты научишь awk переносы расставлять, тогда у тебя усе пойдет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Vlad emailИскать по авторуВ закладки on 15-Ноя-01, 17:29  (MSK)
Вообще проблема заключается в том, что ты запускаешь iostat -Dnr 1 |awk -F, '{print $6}' >> /mylog , а потом небось по Ctrl+C прерываешь выполнение дабы посмотреть результаты. Это значит, что буфер не записывается в файл. А попробуй сделать так:
# iostat -Dnr 1|awk -F, '{print $6}'>>mylog &
Открой другую консоль и в ней набери:
# ps -e|grep iostat
получишь номер процесса
Потом
#kill -HUP n-процесса
Теперь смотри свой лог
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Acher emailИскать по авторуВ закладки on 17-Ноя-01, 21:55  (MSK)
[font size="1" color="#FF0000"]Последняя редакция от 17-Ноя-01 22:01  ()[/font][p]>Вообще проблема заключается в том, что ты запускаешь iostat -Dnr 1 |awk -F, '{print $6}' >> /mylog , а потом небось по Ctrl+C прерываешь выполнение дабы посмотреть результаты. Это значит, что буфер не записывается в файл. А попробуй сделать так:
># iostat -Dnr 1|awk -F, '{print $6}'>>mylog &
>Открой другую консоль и в ней
>набери:
># ps -e|grep iostat
>получишь номер процесса
>Потом
>#kill -HUP n-процесса
>Теперь смотри свой лог

Спасибо. Так действительно работает. Я давал Ctrl+C в той же консоли и файл оставался нулевым. На самом деле задача встала еще серьезнее - мне надо снять логи не только счетчиков iostat, но и других счетчиков - по CPU, памяти, сети и пр. для дальнейшей математической обработки с целью выявления зависимостей в этих счетчиках при периодических тормозах с Oracle на этом сервере. И если iostat позволяет выводить вместе со счетчиками дату и время, то не все другие утилиты могут это делать (mpstat, vmstat, netstat). Что посоветуете для этих утилит (как вывести дату-время)?
И - до кучи - еще один вопрос: показания каких еще счетчиков можно снимать (и средствами каких утилит) для полноты картины?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Vlad emailИскать по авторуВ закладки on 20-Ноя-01, 14:56  (MSK)
Пока не могу сказать - видимо это проблема не так просто решается, надо поглядеть. А как Ораклу настраивать для использования на Соляре можно глянуть на www.samag.com
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Vlad emailИскать по авторуВ закладки on 20-Ноя-01, 15:28  (MSK)
Получить время наверное можно так.
Рассуждать будем логически:
1. показания счетчиков снимаются по интервалу, например 1 секунда.
2. файл имеет время своего создания - t в  секундах, кажись от какого-то там 70 года, то есть закрытия в данном случае.
3. количество секунд = количеству строк
Следовательно, если у нас есть n-строк в файле и текущая строка с номером m, то нужно написать скрипт, который бы переработал лог следующим образом:
- вычислял время в секундах от 70 года по формуле xt=t-(n-m)
- преобразовал бы время xt в дату с временем
- вставлял бы перед каждой m-строкой эту дату с временем
Ну вроде так. Как привязать параллельно выдачу даты и времени к работе счетчиков я пока решить не смог. Решу - отпишу
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Решил я твою проблему"
Сообщение от Vlad emailИскать по авторуВ закладки on 20-Ноя-01, 16:15  (MSK)
Вариант такой:
1. создаешь скрипт, например, в корне
2. touch /mk_date
3. chmod +x /mk_date
4 наполняешь его следующим содержимым с помощью vi
#!/bin/sh
f=`date`
while read stt
  do
   strng="  $stt"
   strng=$f$strng
  echo $strng >> /mylog
done
5. запускаешь
# iostat -Dnr 1 | awk -F, '{print 6}' | ./mk_date &
6. а уж как остановить правильно iostat ты знаешь
Данное решение годится для любых счетчиков
Усе
Пишите письма
С уважением, Бин Ладен :-)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Решил я твою проблему"
Сообщение от Vlad emailИскать по авторуВ закладки on 20-Ноя-01, 16:18  (MSK)
Не забудь, что в скрипте где
f=`date` - обратные апострофы, а то здесь броузер коряво отображает
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Сорри - баги в скрипте mk_date - время стоит на месте..."
Сообщение от Vlad emailИскать по авторуВ закладки on 21-Ноя-01, 11:04  (MSK)
Подправлю - отпишу

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Да, проблема с записью времени... Пока делай так..."
Сообщение от Vlad emailИскать по авторуВ закладки on 21-Ноя-01, 14:07  (MSK)

скрипт mk_date:

#!/bin/sh
f=`date`
sec=0
while read stt
do
echo $f $sec $stt >>/mylog
sec=`expr $sec + 1`
done

Он тебе будет выводить количество секунд на каждое показание счетчика от начала, правда если ты в iostat указал интервал 1 секунду, а для того чтобы преобразовывать время в секунды , потом прибавлять секунду, потом назад в нормальный вид, ты уж сам потрудись, а как смогу так может сделаю. Кстати для преобразования времени в кол-во секунд от 0 часов 1 января 1970 года используй гнутый date из набора shutils на www.sunfreeware.com

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Да, проблема с записью времени... Пока делай так..."
Сообщение от Acher emailИскать по авторуВ закладки on 24-Ноя-01, 22:32  (MSK)
>
>скрипт mk_date:
>
>#!/bin/sh
>f=`date`
>sec=0
>while read stt
>do
>echo $f $sec $stt >>/mylog
>sec=`expr $sec + 1`
>done
>
>Он тебе будет выводить количество секунд
>на каждое показание счетчика от
>начала, правда если ты в
>iostat указал интервал 1 секунду,
>а для того чтобы преобразовывать
>время в секунды , потом
>прибавлять секунду, потом назад в
>нормальный вид, ты уж сам
>потрудись, а как смогу так
>может сделаю. Кстати для преобразования
>времени в кол-во секунд от
>0 часов 1 января 1970
>года используй гнутый date из
>набора shutils на www.sunfreeware.com

Спасибо!
Мне еще посоветовали решить эту задачу на Perl - и, по-моему, есть шансы
сделать это, причем можно сделать перловый скрипт общим для всех возможных утилит.
Обязуюсь написать, когда получится что-то интересное и работоспособное.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "ОК"
Сообщение от Vlad emailИскать по авторуВ закладки on 26-Ноя-01, 11:07  (MSK)
>>
>>скрипт mk_date:
>>
>>#!/bin/sh
>>f=`date`
>>sec=0
>>while read stt
>>do
>>echo $f $sec $stt >>/mylog
>>sec=`expr $sec + 1`
>>done
>>
>>Он тебе будет выводить количество секунд
>>на каждое показание счетчика от
>>начала, правда если ты в
>>iostat указал интервал 1 секунду,
>>а для того чтобы преобразовывать
>>время в секунды , потом
>>прибавлять секунду, потом назад в
>>нормальный вид, ты уж сам
>>потрудись, а как смогу так
>>может сделаю. Кстати для преобразования
>>времени в кол-во секунд от
>>0 часов 1 января 1970
>>года используй гнутый date из
>>набора shutils на www.sunfreeware.com
>
>Спасибо!
>Мне еще посоветовали решить эту задачу
>на Perl - и, по-моему,
>есть шансы
>сделать это, причем можно сделать перловый
>скрипт общим для всех возможных
>утилит.
>Обязуюсь написать, когда получится что-то интересное
>и работоспособное.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "RE: ОК"
Сообщение от Acher emailИскать по авторуВ закладки on 30-Ноя-01, 12:06  (MSK)
Вот обещанный Perlовый сценарий. Это плод коллективного творчества и подражания готовым примерам, следовательно, неоптимален. Он, однако, работает со всеми утилитами (iostat, mpstat, vmstat, netstat и пр.), умеет фильтровать лишь нужные поля и пропускать ненужные строки (например, периодически повторяющиеся заголовки) и в каждую строчку вставлять текущую дату и время.
Буду весьма признателен за конструктивные замечания.

#!/usr/bin/perl
# Оптимизирован для обработки данных утилиты vmstat. Для других утилит отредактируйте
# в случае необходимости номера интересующих полей, шаблоны для пропуска строк и символ
# разделителя (см. комментарии)
# Запуск для утилиты vmstat с выводом 1 раз в минуту: vmstat 60 |./thisscriptname logfilename &

$file = $ARGV[0];
$splt_out = ","; # Разделитель полей
# в выходном файле
@pole = qw( 4 5 ); # Номера интересующих
# полей (swap, free)
@strskip = qw( c minf procs swap util );
# Шаблоны для пропуска ненужных строк с
# заголовками
if(not $file){
print "Not defined filename!\n";
exit(0);
}

# Clear file if exist
open(FL, ">$file");
close(FL);
open(FL, ">>$file");
print FL "Date     &     time,  swap,   free\n"; # Заголовок (кол-во пробелов подбирается по желанию)
close(FL);

while(<STDIN>){
chomp;
$z = $_;
$y = 0;
foreach (@strskip) {
                  if( index($z,$_) > -1) { $y=1; }
}
if( not $y ){
       ($s,$m,$h,$dy,$mn,$yr) = (localtime(time))[0..5];
           $mn++;
         $yr += 1900;
         $datetime = sprintf("d-d-M d:d:d",$dy,$mn,$yr,$h,$m,$s);
@p = split(' ', $z);
# Разделитель в выводе утилиты (обычно пробел)
$str = "$datetime";
foreach (@pole) {
$str .= "$splt_out $p[$_-1]";
}
print "$str\n";
open(FL, ">>$file");
print FL "$str\n";
close(FL);
}else{
print "Skipping: $z\n";
}
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Уважаемые знатоки Solaris, подскажите, как правильно пис..."
Сообщение от Арлекин Искать по авторуВ закладки on 20-Ноя-01, 15:44  (MSK)
>не все другие утилиты могут это делать (mpstat, vmstat, netstat). Что посоветуете для этих утилит (как вывести дату-время)?

Я не админ, вообще-то, но КАЖДАЯ из этих утилит имеет параметр "интевал" в сек. Зная время старта до секунды, с определенной долей погрешности можно получить время каждой строчки. Юзая шелл можно непосредственно перед стартом сделать
start_date=<обратный_апостроф>date<пробел><знак_ПЛЮС>%H%M%S<обратный_апостроф>
и получим ЧЧММСС. По образу и подобию можно вытащить только секунды или окончание. Разницу во времени можно делить на кол-во строк.... Поле непаханное помоему.
Или я чего не так понял...

ЗЫ: Плюсы некоторые символы она у меня все время режет...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Уважаемые знатоки Solaris, подскажите....."
Сообщение от dimaz emailИскать по авторуВ закладки on 29-Ноя-01, 05:15  (MSK)
Как подмантировать разделы DOS в SOLARIS
  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "RE: Уважаемые знатоки Solaris, подскажите....."
Сообщение от Vlad emailИскать по авторуВ закладки on 29-Ноя-01, 11:06  (MSK)
mount -F pcfs ......
  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "RE: Уважаемые знатоки Solaris, подскажите....."
Сообщение от Vlad emailИскать по авторуВ закладки on 29-Ноя-01, 11:10  (MSK)
mount_pcfs(1M)
NAME | SYNOPSIS | DESCRIPTION | OPTIONS | FILES | ATTRIBUTES | SEE ALSO | NOTES
NAME
mount_pcfs - mount pcfs file systems
SYNOPSIS
mount -F pcfs [generic_options] [-o FSType-specific_options] special| mount_point
mount -F pcfs [generic_options] [-o FSType-specific_options] special mount_point
DESCRIPTION
mount attaches an MS-DOS file system (pcfs) to the file system hierarchy at the mount_point, which is the pathname of a directory. If mount_point has any contents prior to the mount operation, these are hidden until the file system is unmounted.

If mount is invoked with special or mount_point as the only arguments, mount will search /etc/vfstab to fill in the missing arguments, including the FSType-specific_options; see mount(1M) for more details.

The special argument can be one of two special device file types:

A floppy disk, such as /dev/diskette0 or /dev/diskette1.

A DOS logical drive on a hard disk expressed as device-name:logical-drive , where device-name specifies the special block device-file for the whole disk and logical-drive is either a drive letter (c through z) or a drive number (1 through 24). Examples are /dev/dsk/c0t0d0p0:c and /dev/dsk/c0t0d0p0:1.

The special device file type must have a formatted MS-DOS file system with either a 12-bit, 16-bit, or 32-bit File Allocation Table.

OPTIONS
generic_options
See mount(1M) for the list of supported options.

-o
Specify pcfs file system specific options. The following options are available:

rw|ro
Mount the file system read/write or read-only. The default is rw.

foldcase|nofoldcase
Force uppercase characters in filenames to lowercase when reading them from the filesystem. This is for compatibility with the previous behavior of pcfs. The default is nofoldcase.


FILES
/etc/mnttab
table of mounted file systems

/etc/vfstab
list of default parameters for each file system

ATTRIBUTES
See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Availability SUNWesu

SEE ALSO
mount(1M), mountall(1M), mount(2), mnttab(4), vfstab(4), attributes (5), pcfs(7FS)

NOTES
If the directory on which a file system is to be mounted is a symbolic link, the file system is mounted on the directory to which the symbolic link refers, rather than on top of the symbolic link itself.

SunOS 5.8    Last change: 26 Jan 1998

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | FILES | ATTRIBUTES | SEE ALSO | NOTES


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру