Тэг ‘linux’

linux - Добавляем локаль (locale) при помощи localedef

Если функции изменения регистра некорректно работают с русским текстом, и не помогает установка локали в php (функция setlocale), скорее всего, нужной локали просто нет на сервере.

Если имеется доступ по SSH, посмотреть список имеющихся локалей можно командой

locale -a

locale -a | grep ru_RU

Если нужной локали (обычно, требуется ru_RU.CP1251 - остальные, скорее всего уже установлены) нет, установить (добавить в систему) её можно командой localedef (в Linux):

localedef -c -i ru_RU -f CP1251 ru_RU.CP1251

Если интересуют подробности - можно почитать, man localedef (для начала).
http://unix1.jinr.ru/~lavr/locale-1251.html - более подробная информация

краткая памятка по locale

Конфигурация локали в Debian

dpkg-reconfigure locales

Опубликовано Август 27, 2010 | автор: levik  |  Нет комментариев »

linux - массовый поиск и замена в файлах

Поиск текста по файлам в Linux:

grep -rl 'text' /var/www/
- ищем файлы, в которых имеется ‘text’
grep -rl 'text' ./
- то же, но в текущей категории..

Поиск и удаление файлов, содержащих строку
78.46.14.162

find /var/named/ -type f -exec grep "MX" {} ; -print | grep named
(имя файла и найденный текст)

find . -name '*.*htm*' -exec grep -i iframe {} ; -print | less
ищем iframe (файлы, перезаписанные вирусом).

Массовый поиск и замена в файлах:

sed -i~ "s/search text/replace text/g" index.php
i~ - флаг, указывающий на то, что оригинальный файл будет сохранен как file.ext~
g - заменяем не только первое вхождение

поиск и замена в нескольких файлах с использованием perl
perl -pi~ -e 's/foo/bar/' [files]

Поиск и замена с использованием sed (ищем скрипт и заменяем его на комментарий. Экранируем восклицательный знак:
sed -i.~ "s/≶script>var k;.*script>/≶\!-- deleted -->/g" index.php

Флаг -i (inplace) означает, что результат следует сделать в файле. При наличии символов после -i резервная копия сохраняется в соответствующий файл (некоторые системы не дают выполнить команду с флагом -i без сохранения резервной копии).
Для удобства дальнейшего удаления использую -i.~ (можно -i.bak - сохранит файлы, добавляя расширение bak). Дальнейшее удаление при помощи команды find + delete
find ./ -name '*.~' -delete

http://mywiki.wooledge.org/BashFAQ/021

Пригодилось при замене вирусных кодов на сайте - первым этапом поиск файлов, затем - дальнейшая замена. В принципе, можно сделать всё одним махом. В случае замены флаг -i

Подсчет количества конкретных слов в файле:
http://www.linux.org.ru/forum/general/5120319

Поиск строки с указанием её номера grep -n ‘needle’ file.txt

Просмотр файла, начиная со строки 532
more +532 file.txt

Массовое переименование файлов в linux - rename регулярка (/что заменять/на что заменять/ в каких файлах)
rename "s/.JPG/.jpg/g" *.JPG
http://www.cyberciti.biz/tips/renaming-multiple-files-at-a-shell-prompt.html

Поиск файлов по размеру

Для удаления файлов, найденных командой find достаточно указать дополнительный параметр -delete

Поиск php файлов размером 535 байт (c - указывает на размер в байтах, по умолчанию - в блоках 512)
find ./ -type f -name '*.php' -size 599c
При указании размера со знаком плюс или минус - происходит поиск файлов соответственно больше или меньше указанного значения.

Поиск подстроки в недавно модифицированных файлах (40 дней назад ! минус перед числом обязателен):
find ./ -name "*.php" -mtime -40 -exec grep "breadcrumb" {} \;

Поиск файлов find + последующий grep для них (find + exec grep).. во второй строчке - ещё и удаление
find ./ -type f -name '*.php' -size 599c -exec grep -l "c1120ba44a14664ed80cfa5a18832c1b9b39dec0" {} \;
find ./ -type f -size 599c -exec grep -l "c1120ba44a14664ed80cfa5a18832c1b9b39dec0" {} \; -delete
Поиск файлов больше мегабайта (+1M) меньше (-1M)
find ./ -type f -size +1M

Поиск файлов с нулевой длиной
find ./ -type f -size 0
Поиск и удаление файлов с нулевой длиной (вторым парамтером - путь к каталогу.. ./ означает текущий
find ./ -type f -size 0 -delete

Поиск номеров строк
в файле (чтобы grep вывел номер строки - используем с параметром -n)

Чтобы вытащить определённые строки из файла (или удалить строки в начале файла и в конце файла), можно использовать sed - выведет строки с 4 по 17
sed -n '3,10p' file.txt

Переместить файлы размером >2Mb в каталог /tmp (и вообще выполнить любую команду с файлами)
find ./ -size +2M -exec cp {} /tmp \;

Ресайз всех изображений в каталоге, размер которых превышает 2М
find ./ -size +2M -exec convert {} -resize 1200x1200 {} \;

Ресайз всех изображений, по маске
find ./ -name '493_*' -exec convert {} -resize 1200x1200 {} \;

Рекурсивно удалить все .svn директории в подкаталогах
find . -name ".svn" -exec rm -rf {} \;

Опубликовано Май 29, 2010 | автор: levik  |  Комментарии (2) »

Запуск Fedora Core c USB flash (LiveUSB Fedora)

Оригинальный ISO-файл Fedora Core, скачанный с сервера (или при помощи торрент-клиента - так быстрее :))  записан в ОС Windows на флешку USB при помощи Unetbootin. Однако, при попытке загрузить свеженькую “Федору” получаем в ответ что-то вроде “tried to remove a fb that we didn’t open”

Для создания загрузочной USB-флешки с операционной системой Fedora, следует воспользоваться специальной утилитой для windows liveusb-creator,(ссылка на сайт проекта). Да, емкость флешки должна быть не меньше, чем 1Гб.

Создаем загрузочный USB-Flash диск в Windows:

Скачиваем  архив с программой  liveusb-creator, извлекаем его содержимое во временный каталог. Работа с программой LiveUSB creator не представляет особых трудностей - GUI интерфейс, ничего лишнего:

  1. Выбираем источник (образ LiveCD или URL для скачивания)
  2. Выбираем target device - устройство, на которое будет записан образ
  3. Ползунком регулируем размер области USB-flash-диска под федору
  4. Нажимаем “Create LiveUSB”

Дожидаемся окончания операции и загружаем с LiveUSB флешки привычную (или не очень) федору.

Удачи!

Опубликовано Май 21, 2010 | автор: levik  |  Нет комментариев »

locale и setlocale - устанавливаем локаль

Устанавливаем локаль.  памятка

setlocale(LC_ALL, ‘nl_NL’); // php4, 5

LC_ALL - все функции
LC_COLLATE - функции сравнения строк, см. strcoll()
LC_CTYPE - функции преобразования строк, например strtoupper()
LC_MONETARY - функция localeconv()
LC_NUMERIC - задает символ десятичной точки (см. также localeconv())
LC_TIME - форматирование дат функцией strftime()

Локали

ru_RU.UTF-8
ru_RU.CP1251
ru_RU.KOI8-R
en_US.UTF-8
ru_RU.KOI8-R
uk_UA.UTF-8
uk_UA.KOI8-U
uk_UA.CP1251
UTF-16/CP1251/CP866 (Windows)

В некоторых системах локали генерируются  только строчными буквами и без “минусов”-дефисов (несмотря на регистр при установке):

ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8
Установить локаль (если прав хватит :))
localedef –no-archive -c -f CP1251 -i ru_RU ru_RU.CP1251

Опубликовано Июнь 11, 2009 | автор: levik  |  Комментарии (2) »

rtorrent консольный торрент клиент для linux

Некоторое время использовал возможности не особо загруженного *x сервера.. Постоянный выделенный IP + не гудит под ухом по ночам… Но сейчас не об этом.. Задача: запуск торрент-клиента в Linux.

Торрент клиент для Linux/Unix - RTorrent

В качестве торрент-клиента был выбран именно rTorrent. (альтернативы смотреть тут, возможности в сравнении - тут). В качестве отличий была отмечена нетребовательность к ресурсам.

Довольно подробно установка клиента (кстати, и обоснование выбора) описана у yavova.

Поскольку, клиент консольный, без User Guide -а не обойтись. Автозапуск rTorrent - вариации + обсуждения. Отметил следующее: для запуска rtorrent “не от рута” вставляем строку в /etc/rc.d/rc.local

screen -S rtorrent -d -m su - torrent -c rtorrent

Создается detached screen с названием rtorrent (чтобы подключаться не по id, а просто screen -r rtorrent), а уже в самом скрине запускается rtorrent от пользователя torrent через su.

Как вариант воспользоваться @reboot - выполнять при загрузке операционной системы,

@reboot screen -dmS TORRENT rtorrent

+ небольшой бонус про подключение с использованием скринов..* Чтобы запустить торрент необходимо нажать не ctrl+s, а последовательно ctrl+a s или ctrl+a ctrl+s; для отключения от скрина ctrl+a d

Раскрашиваем rTorrent или цветные темы.. Сам не использовал..

Вот такая вот подборка ссылок по консольному торрент-клиенту rTorrent. Возможно, по мере накопления будет пополняться…

Опубликовано Февраль 5, 2009 | автор: levik  |  Нет комментариев »

Установка mc - midnight commander install

Midnight Commander - файловый менеджер для linux (а также freebsd, unix), по внешнему виду очень похож на Norton Commander, или Far (Возможно, старого доброго дедушку нортона не многие помнят…). Конечно, для полноценного администрирования без знания команд *nix не обойтись, но вот навигация по каталогам, операции с каталогами, файлами, группами файлов, а также просмотр и редактирование файлов становится намного удобнее.

Midnight Commander обычно не устанавливается по умолчанию, однако проверить недолго - набираем в командной строке
mc
если в ответ скучное “command not found” или что-то похожее - все правильно. Будем устанавливать.

Установка Midnight Commander, продолжение

Опубликовано Январь 29, 2009 | автор: levik  |  Комментарий (1) »

MySQL fatal error - Error writing file ‘/tmp/MYxxxxxx’ (Errcode: 122)

При выполнении SQL запроса возникает ошибка с кодом 122.

Ошибка MySQL Error writing file ‘/tmp/MYxxxxxx’ с кодом 122 (Errcode:122) говорит о невозможности.. записать временный файл. Чтобы понять это, особого знания английского языка не требуется. Гораздо интереснее, почему же mysql не может записать этот временный (или постоянный) файл в каталог tmp (или каталог баз данных). Кстати, ошибка может появляться при выполнении различных SQL-запросов, как на выборку, так и на запись.

Error code 122: Disk quota exceeded (см. коды ошибок MySQL)

Причины ошибки Can’t create/write to file ‘/tmp/MYxxxxxx’ (Errcode: 122)

Одной из возможных (довольно частых) причин ошибки создания файла может быть … переполнение диска, временного каталога или каталога пользователя. СтОит проверить (по SSH - команда df). Если дело действительно в переполнении - ищем “лишние файлы”. Если есть ssh-доступ - довольно удобно воспользоваться командой du (du –max-depth=1) Если места хватает, смотрим квоту пользователя, от имени которого запущен MySQL.

Если хостинг предоставляется как услуга - смело обращайтесь в службу поддержки.

VPS и Ошибка MySQL “Can’t create/write to file” (Errcode: 122)

Если у вас выделенный сервер (или виртуальный выделенный сервер) и вы столкнулись с ошибкой MySQL при создании временных файлов, то, скорее всего… на VPS кончилось место. Смотрим, куда же делось свободное место и удивляемся… Рекомендую проверить каталог с log-файлами. Если дело в логах - настраиваем ротацию (или удаляем по cron-у). Если не помогло - ищем “мусорку” с помощью du.

Знаете другие способы решения ошибки MySQL 122 Can’t create/write to file? Пишите в комментарии!

ps. Интересно, что по запросу MySQL Error writing file (Errcode: 122) в Yandex на первой странице довольно весомые (%) сайты абсолютно не связанные с компьютерной тематикой. Никто не застрахован от ошибок! (Если появится желание проверить - следует учитывать, что ситуация со временем меняется…)

Опубликовано Сентябрь 5, 2008 | автор: levik  |  Нет комментариев »