Помогите написать скрипт с использованием du и сложениями, Im27th, 01-Сен-09, 12:56 [смотреть все]Вообще-то он должен работать под Solaris 8, но я думаю синкансис не очень отличается - главное структура.Смысл вот в чём: есть 3 директории dir1 dir2 dir3 в них куча поддиректорий, включая нужную нам директорию data все директории data одинаковы, к примеру /dir1/data/orenburg /dir1/data/saratov /dir1/data/tallinn /dir2/data/orenburg /dir2/data/saratov /dir2/data/tallinn /dir3/data/orenburg /dir3/data/saratov /dir3/data/tallinn В реальности конечно директорий намного больше. Необходимо написать скрипт, который бы считал общее занятое место в одноимённых конечных директориях, то есть orenburg 123G saratov 65G tallinn 227G Хотя идеально было бы вообще вот так orenburg 123G dir1 50G dir2 50G dir3 23G saratov 65G dir1 20G dir2 20G dir3 25G tallinn 227G dir1 100G dir2 100G dir3 27G Не пойму как по отдельной директории вытаскивать и потом всё это складывать.
|
- Помогите написать скрипт с использованием du и сложениями, phpcoder, 13:02 , 01-Сен-09 (1)
- Помогите написать скрипт с использованием du и сложениями, akiri4, 10:25 , 02-Сен-09 (3)
- Помогите написать скрипт с использованием du и сложениями, Pahanivo, 10:27 , 02-Сен-09 (4)
- Помогите написать скрипт с использованием du и сложениями, akiri4, 10:36 , 02-Сен-09 (5)
- Помогите написать скрипт с использованием du и сложениями, Im27th, 11:24 , 02-Сен-09 (6)
Думаете я извилины не нарягаю?Я пришёл на новую работу, а мне тут сразу и Oracle мониторить, и испытать как работает Solaris 8 в контейнере Solaris 10, и изучить lustre и samfs, и ещё скрипты писать - времени ваще нету и облажаться тоже не хочется. Поэтому и прошу помощи.
- Помогите написать скрипт с использованием du и сложениями, Pahanivo, 14:25 , 01-Сен-09 (2)
- Помогите написать скрипт с использованием du и сложениями, ACCA, 00:04 , 04-Сен-09 (13)
- Помогите написать скрипт с использованием du и сложениями, Im27th, 10:02 , 04-Сен-09 (15)
>Не нужно писать подсуммы с перестановками на shell, в Solaris для этого >есть Perl. > >du -s */* | perl -e 'while (<>) { ($s,$d1, $d2) = split /[\s\/]+/; $size{$d2}{$d1} = $s; $size{$d2}{"\rTOTAL"}+= $s; } foreach $d2 (keys %size) { foreach $d1 (sort keys %{$size{$d2}}) {print "\t$d1 $d2 $size{$d2}{$d1}\n";}}'Perl - классно. Попробую разобраться. А пока что вот что вышло (тестирую на CentOS): find /dir1/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > 1.txt; j=`cat 1.txt | wc -l` i=1 for i in {1,2,3} do CURDIR=`head -n $i 1.txt | tail -1` du -k -s -c /dir*/data/$CURDIR done Теперь: 1. В Solaris нет maxdepth mindepth 2. В Solaris нет du -c 3. Не могу сделать нормальный цикл - как сделать, чтобы было не for i in {1,2,3} а for i и количество циклов раное j 4. Пока разбираюсь с этим - следующим пунктом народу захотелось, чтобы ещё напротив каждого каталога стояла время последней его модификации. Я понимаю, что надо что-то типа ls -lc, но как бы одну дату вытащить без всей мишуры? Или опять заталкивать в файл и обрезать?
- Помогите написать скрипт с использованием du и сложениями, Im27th, 15:59 , 04-Сен-09 (17)
O! Замутил!find /dir1/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > spisok.txt; j=`cat spisok.txt | wc -l` i=1 a=1 for i in {1,2,3} do CURDIR=`head -n $i spisok.txt | tail -1` echo "Проект $CURDIR" du -k -s -c /dir*/data/$CURDIR > du$i.txt ls -dlc /dir*/data/$CURDIR > ls$i.txt cut -f2 du$i.txt > dir$i.txt cut -b8-10 dir$i.txt > subdir$i.txt cut -f1 du$i.txt > size$i.txt cut -b29-44 ls$i.txt > date$i.txt for a in {1,2,3} do head -n $a subdir$i.txt | tail -1 > onedir$a.txt head -n $a size$i.txt | tail -1 > onesize$a.txt head -n $a date$i.txt | tail -1 > onedate$a.txt VIVOD=`cat onedir$a.txt onesize$a.txt onedate$a.txt` echo $VIVOD rm onedir$a.txt rm onesize$a.txt rm onedate$a.txt done echo rm du$i.txt rm ls$i.txt rm dir$i.txt rm subdir$i.txt rm size$i.txt rm date$i.txt done rm spisok.txt Только вот с циклом так и не разобрался. У меня ведь неизвестное и меняющееся количество поддиректорий.
- Помогите написать скрипт с использованием du и сложениями, Im27th, 14:07 , 14-Сен-09 (18)
O! Какая хрень получилась find /bigsan0/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > spisok.txt; SUBDIR=`find /bigsan0/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4` j=`cat spisok.txt | wc -l` i=1 for files in ${SUBDIR}/* do CURDIR=`head -n $i spisok.txt | tail -1` echo "Проект $CURDIR" du -k -s -c /bigsan*/data/$CURDIR > du$i.txt ls -dlc /bigsan*/data/$CURDIR > ls$i.txt cut -f2 du$i.txt > dir$i.txt cut -b1-8 dir$i.txt > subdir$i.txt cut -f1 du$i.txt > size$i.txt cut -f7-10 -d' ' ls$i.txt > date$i.txt a=1 b=`cat subdir$i.txt | wc -l` c=`cut -b1-8 dir$i.txt` #for a in {1,2,3,4} for word in ${c} do head -n $a subdir$i.txt | tail -1 > onedir$a.txt head -n $a size$i.txt | tail -1 > onesize$a.txt head -n $a date$i.txt | tail -1 > onedate$a.txt VIVOD=`cat onedir$a.txt onesize$a.txt onedate$a.txt` echo $VIVOD #echo $i #echo $j #echo $a rm onedir$a.txt rm onesize$a.txt rm onedate$a.txt a=`expr ${a} + 1` done echo rm du$i.txt rm ls$i.txt rm dir$i.txt rm subdir$i.txt rm size$i.txt rm date$i.txt i=`expr ${i} + 1` done rm spisok.txt
|