Archive for the ‘freebsd’ Category

Свежие файлы

Thursday, December 20th, 2007

Команда помогает найти в каталоге свеже созданные файлы в течении n*24 часов

find ./ -ctime 4

В данном случае 4 дней. Или свеже измененные, в течении того же периуда.

find ./ -mtime 4

FreeBSD+mySql: первый запуск

Wednesday, November 7th, 2007

Коллекция нестандартных ошибок по полнилась еще одним запуском mySql на FreeBSD. База устанавливалась из портов. Инсталляция прошла вроде ровно. В /etc/rc.conf добавил запись

mysql_enable="YES"

но …

# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server
through socket '/tmp/mysql.sock' (2)

Если дать поиск по Google с этим выводом то можно наткнуться на несколько проблем которые могут вызвать подобную ошибку и столько решений. Я рассажу как фиксилось в моем случае. 
Для начала проверил, а запущен ли демон

#ps -aux | grep mysql
root    1839  0.0  0.4  1608  1008  p3  S+    3:58PM   0:00.00 grep mysql

затем начал искать демона

# pkg_info -Lx mysql*-server|grep rc.d
/usr/local/etc/rc.d/mysql-server
#/usr/local/etc/rc.d/mysql-server status
mysql is not running.

вообще-то в мануале рекомендуется при первом старте давать команду mysql_install_db, что я и сделал. Затем стал искать логи с ошибками. С начало в /var/log/messages но там не было ничего по этой теме, затем в /var/db/mysql где была следующая запись

071106 13:10:25 [ERROR] /usr/local/libexec/mysqld: Can't find
file: './mysql/host.frm' (errno: 13)
 071106 13:10:25 [ERROR] Fatal error: Can't open and lock privilege
tables: Can't find file: './mysql/host.frm' (errno: 13)

после этого проверил файл host.frm

# ls -l /var/db/mysql/mysql/host.frm
-rw-rw----  1 root  whell  /var/db/mysql/mysql/host.frm

файлы принадлежали root причем все включая саму папку mysql. После того как семенил из ориентацию на mysql

chown -R mysql:mysql /var/db/mysql

все заработало!

use XML::DOM

Monday, October 1st, 2007

Впереди грядет Perl6 в котором многое уделено работой с XSLT поэтому пред этим надо по быстрому разобраться с XML на перле. Есть несколько молулей для работы с XML, но наиболее близким по синтаксису к DOMDocument в PHP мне показался модуль XML::DOM.

Для начала, пришлось устанавливать его из портов под FreeBSD. Под рутом итрпавился в путь

cd /usr/ports/textproc/p5-XML-DOM

и там запустил make install

После установки для теста создал простейший документ

#!/usr/bin/perl

use XML::DOM;
my $doc = XML::DOM::Document->new;

my $xml_pi = $doc->createXMLDecl ('1.0');

my $root = $doc->createElement('html');
my $body = $doc->createElement('body');
$root->appendChild($body); 

print $xml_pi->toString;
print $root->toString;

Сохранив файл и дав ему права на запуск получаю вот такой вывод

<?xml version="1.0"?><html><body/></html>

Из не совсем привычных вещей это два принта для вывода одного файла. Но, как говориться, кудаж без этого в perl, было бы странно, будь оно не так. Не стоит переживать, в этом случае print служит вызовом метода класса,
print $xml_pi->toString; - вызывает метод который добавляет версию к документу
print $root->toString; - выводит сам документ

Правильная локаль

Thursday, September 27th, 2007

В php есть возможность установив локаль setlocale() получить скажем дни недели по русски, вот пример

setlocale(LC_ALL, 'ru_RU.CP1251');
echo strftime(" %A %e %B %Y ");

ответом будет

четверг 27 сентября 2007

но разговор не об этом, а о том как правильно прописать нужный язык и вообще проверить есть ли он на сервере. Если у вас есть доступ к консоле, то введите такую команду

$ ls /usr/share/locale

и в ответ вы получите вот такой список языков, который и сможете применить в setlocale();

UTF-8                de_DE.ISO8859-15     es_ES.ISO8859-15
....
de_DE.ISO8859-1      es_ES.ISO8859-1      hr_HR.UTF-8

Размеры папок

Friday, September 14th, 2007

Немного извращенная команда для просмотра размеров папок в каталоге

$ du -d 1 -k ./ | awk 'BEGIN {FS="\t"}{print $2,"-",$1 }' | sort
./ - 19038
./.mc - 18
./.ssh - 4
./bak - 666
./bakclass - 206
./classes - 48
./wordpress - 3066

du
-d 1 - глубина 1
-k - в килобайтах

awk
{FS=”\t”} - разделитель таб
{print $2,”-”,$1 } - поменять местами

Фоновые процессы

Thursday, September 13th, 2007

Не всегда есть возможность работать сразу с несколькими терминалами, поэтому можно выкрутиться одним

запустим приложение в фоновом режиме

# <команда> &

для того что бы отправить уже запущенную команду нажимаем ctrl-z а затем набираем bg

что бы вернуть фоновую команду на поверхность fg

PS: не любую команду можно отправлять в фон и не с любой точки доступа, в каждом случае надо читать документацию

readlink

Thursday, September 6th, 2007

Команда readlink позволяет получить именно ссылку.
Консольный пример

# создаем ссылку
$ ln -s  ~rus/Documents/Books  ~rus/Desktop/

# читаем файл
$ ls -l Boo*
lrwxr-xr-x   ... Books -> /Users/rus/Documents/Books

# получаем ссылку
$ readlink Books
/Users/rus/Documents/Books

теперь попробуем написать perl команду для прочесывания папки на предмет символьных ссылок

#!/usr/bin/perl

foreach (`ls`) {
 $link = `readlink $file`;
 if ($link ne ""){
   chomp($link);
   chomp($file);
   print "$file - $link\n";
 }
}

запускаем и получаем

$ ./rfiles.pl
Books - /Users/rus/Documents/Books

Easy Editor на час

Tuesday, August 7th, 2007

По умолчанию у меня на FreeBSD установлен vi. Штука конечно хорошая, но для нее нужен черный пояс, а у меня пока белый ;) Поэтому решил править crontab через ee (easy editor)
в консоле набираю

VISUAL=ee crontab -e

в следующий раз загрузится опять vi

Еще быстрый поиск

Monday, August 6th, 2007

еще один быстрый способ найти файл это коменда find

find ./ -name *15060*.jpg

команда начинает работать с текущей папки проходит по всем вложенным и выводит все файлы соответствующие маске

./20070413/15058.jpg
./20070413/15058_s.jpg

Быстый поиск файлов

Monday, July 30th, 2007

утилита find

$ find ./ -name '*.html'  # найти все html файлы с текущей папке
$ find ./ -name '*1.html'  # найти все файлы
$ find ./ -name 'a*.js'    # соотвествующие маске