Свежие файлы
Thursday, December 20th, 2007Команда помогает найти в каталоге свеже созданные файлы в течении n*24 часов
find ./ -ctime 4
В данном случае 4 дней. Или свеже измененные, в течении того же периуда.
find ./ -mtime 4
Команда помогает найти в каталоге свеже созданные файлы в течении n*24 часов
find ./ -ctime 4
В данном случае 4 дней. Или свеже измененные, в течении того же периуда.
find ./ -mtime 4
Коллекция нестандартных ошибок по полнилась еще одним запуском 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
все заработало!
Впереди грядет 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; - выводит сам документ
В 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
Немного извращенная команда для просмотра размеров папок в каталоге
$ 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 } - поменять местами
Не всегда есть возможность работать сразу с несколькими терминалами, поэтому можно выкрутиться одним
запустим приложение в фоновом режиме
# <команда> &
для того что бы отправить уже запущенную команду нажимаем ctrl-z а затем набираем bg
что бы вернуть фоновую команду на поверхность fg
PS: не любую команду можно отправлять в фон и не с любой точки доступа, в каждом случае надо читать документацию
Команда 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
По умолчанию у меня на FreeBSD установлен vi. Штука конечно хорошая, но для нее нужен черный пояс, а у меня пока белый
Поэтому решил править crontab через ee (easy editor)
в консоле набираю
VISUAL=ee crontab -e
в следующий раз загрузится опять vi
еще один быстрый способ найти файл это коменда find
find ./ -name *15060*.jpg
команда начинает работать с текущей папки проходит по всем вложенным и выводит все файлы соответствующие маске
./20070413/15058.jpg ./20070413/15058_s.jpg
утилита find
$ find ./ -name '*.html' # найти все html файлы с текущей папке $ find ./ -name '*1.html' # найти все файлы $ find ./ -name 'a*.js' # соотвествующие маске