среда, 27 июня 2012 г.

Подсчет процессов

Встретил в книге одного "эксперта" по GNU/Linux следующий способ подсчета количества запущенных экземпляров определенного процесса:

ps aux | grep httpd | grep -v grep | wc -l

Unix-way, не спорю.
Что тут не так?
За grep -v grep нужно руки отрывать.
Уж можно было сделать ps aux | grep http[d], старый трюк, чтоб строчка с самой командой grep не выводилась в результатах. Но и это костыль:
 Давно известно, что на замену ps | grep есть pgrep. Ну а чтобы еще и посчитать, у pgrep есть опция -c.
Т.е. вызов четырех команд можно заменить одной:

pgrep -fc httpd


Всё давно придумано за нас.

P.S. в той книге встречаются еще и конструкции типа cat | grep | awk или grep | sed. "Эксперт", что уж поделаешь.

среда, 20 июня 2012 г.

Узнать время модификации файла

Как узнать время последней модификации файла?


Не просто узнать, а еще и перевести в unixtime, и при этом с минимумом телодвижений:
stat -c "%Y" filename


А вообще,man stat

пятница, 15 июня 2012 г.

Быстрое развертывание хоста виртуализации на Centos+KVM+libvirt

KVM -- специальная прослойка-интерфейс для предоставления доступа виртуальным машинам к реальному железу. Требует обязательной поддержки аппаратной виртуализации в процессоре.


1. Ставим Centos 6 x86_64 в минимальной конфигурации. Я обычно ставлю с netinstall, убрав галочки со всех компонентов.

2. Устанавливаем собственно модули, эмулятор qemu и библиотеку libvirt, которая является оберткой для комфортного управления машинами.
yum install qemu-kvm libvirt

3. В файле /etc/libvirt/libvirtd.conf находим и раскомментируем следующие опции (отключаем шифрование административного подключения, разрешаем входящие подключения по сети, режим аутентификации -- sasl):
listen_tls = 0
listen_tcp = 1
mdns_adv = 0
auth_tcp = "sasl"

4. Включаем "удаленный рабочий стол" по протоколу VNC. Там же можно включить протокол SPICE, если нужно. В файле /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
vnc_password = "pa55w0rd"

5. Еще одно место, где нужно разрешить демону libvirtd принимать соединения. В файле /etc/sysconfig/libvirtd
LIBVIRTD_ARGS="--listen"

6. Создать пользователя и задать ему пароль. Этот пользователь не имеет отношения ни к локальным unix-пользователям, ни к пользователям виртуальных машин. Это логин+пароль для подключения к libvird с другой машины. Дать команду:
saslpasswd2 -a libvirt username

7. Открыть в iptables подключения с админской машины (для VNC 5900/tcp, для libvirt 16509/tcp).

8. Запускаем.
service libvirtd start

9.Проверим работу локально.
virsh list
Если ошибок нет, значит всё, сервер настроен верно.

На админскую машину ставим virt-manager и пробуем подключиться.