Написать письмо
 

Ваш е-майл

Ваше имя

Ваше сообщение


 
новое! собираю для себя и для других:
команды и скрипты на bash

шаблон документа word для различной документации

Моя биография в компьютерах и технологиях

О распознавании образов

новое! О юзабилити

My Wishlist

Алиев Рауф, РБК

резюме | фото | жж | программы | проекты | новости
iway.ru

Кто хочет — тот ищет способ, кто не хочет — ищет причины...

все для PM | рисунки
*nix Bash FAQ

Я тут составляю потихоньку маленький справочник по bash, часто удобно автоматизировать некоторые операции за счет небольших скриптиков или команд.
Полезности для работающих в командной строке *nix

#find . -maxdepth 1 -type d -exec du -sk {} \; | sort -rn

или подлинее

#find . -maxdepth 1 -type d -print | xargs du -sh | sort -rn
Команда, предназначенная для вывода всех поддиректорий с размерами

#:>file

То же, что и

#cat /dev/null > file

Обнуление файла

#egrep -v "^#|^[:blank:]*$" file

или, проще

#egrep -v "^#|^$" file
Просмотр файла без комментариев и пустых строк. Особенно удобно для просмотра конфигов.

#for x in *; do mv "$x" `echo $x | sed -e 's/ /_/g'`; done
удаление пропусков в именах файлов и директорий и подстановка нижней черты ,,_,, в определенном каталоге замена пробелов в именах файлов и каталогов на символ подчеркивания

#for x in *; do OLDFILE=$x; NEWFILE=`echo $x | perl -i -npe "s/БЫЛО/СТАЛО/ig";`;echo $OLDFILE to $NEWFILE; done
переименование файлов в директории по правилу, указыаемому в регулярном выражении. Вместо БЫЛО и СТАЛО нужно поставить правила регулярных выражений, а вместо echo - когда убедитесь, что делает что надо, поставить mv, "to" убрать совсем - в mv он, конечно, не нужен.

Я тут набросал скриптик, позволяющий понять, падает скрипт из-за нехватки памяти или чего-то еще. работает он так: запускаем в одной сессии
#./memusage.sh <имя php-script-a> & php <имя того же скрипта>

Например:
#./memusage.sh con_index.php & php con_index.php

Смотреть надо на колонку "free"
Пример:
# ./memusage.sh con_index.php &
[1] 3766
initial state:
procs -----------memory---------- ---swap-- -----io---- --system-
 r b swpd free buff cache si so bi bo in cs
 0 0 0 246968 179616 214024 0 0 0 2 8 5
please, run script con_index.php at next ssh session
listening script con_index.php...
[root@srv product_import]# php con_index.php
r b swpd free buff cache si so bi bo in cs us
1 0 0 212928 179636 214004 0 0 0 2 8 5 0
r b swpd free buff cache si so bi bo in cs us
2 0 0 205500 179636 214004 0 0 0 2 8 5 0
r b swpd free buff cache si so bi bo in cs us
2 0 0 195880 179636 214004 0 0 0 2 8 5 0
...
 r b swpd free buff cache si so bi bo in cs us
 2 0 0 39456 179624 191916 0 0 0 2 8 5 0
 r b swpd free buff cache si so bi bo in cs us
 1 0 0 40620 179624 191916 0 0 0 2 8 5 0
 r b swpd free buff cache si so bi bo in cs us
 1 0 0 39788 179624 191916 0 0 0 2 8 5 0
Тут видно, что память резко уменьшается с 246Mb до 40Mb.
вот собственно, сам скрипт:
#!/bin/bash
if test "$1" == ""; then
 echo "script memory usage dumper";
 echo "Usage: memusage.sh ";
 exit;
fi
echo "initial state:"
vmstat;
echo "please, run script $1 at next ssh session";
echo "listening script $1...";
START=0;
while true; do 
A=`ps axuw | grep "php $1" | grep -v "grep"`;
if test "$A" != ""; then
 echo "$A";
 vmstat;
 START=1;
 else
 if test "$START" == 1; then
 echo "DONE";
 break;
 fi
fi
sleep 0.01; 
done | grep "free" -A 1 | grep -v "\-\-" > /tmp/mem; 
cat /tmp/mem; 

while [ -e "$1" ]
do
 NEW=`date -r "$1" +%Y-%m-%d_%Hh%M`
 echo "$1 -> "$NEW"_"$1
# mv "$1" $NEW"_$1"
 shift
done
Скриптик, добавляющий в начало имен файлов, перечисленных в комадной строке дату и время. Нужно раскомментировать mv, чтобы он реально переименовывал. Можно модифицировать так, чтобы только дата, например, прибавлялась и не в начало, а в конец.