среда, 29 сентября 2010 г.

Установка htop на CentOS

htop — продвинутый монитор процессов, написанный для GNU/Linux. Он был задуман заменить стандартную программу top. Htop показывает динамический список системных процессов, список обычно выравнивается по использованию ЦПУ. В отличие от top htop показывает все процессы в системе. Также показывает время непрерывной работы, использование процессоров и памяти.
Htop часто применяется в тех случаях, когда информации даваемой утилитой top недостаточно, например при поиске утечек памяти в процессах.
Htop написан на языке Си и использует для отображения библиотеку Ncurses.
Для установки необходимо сначала скачать RPM-пакет:

wget http://packages.sw.be/htop/htop-0.8.3-1.rh9.rf.i386.rpm

И далее произвести его установку:

rpm -ihv htop-0.8.3-1.rh9.rf.i386.rpm

После того как система уведомит вас об успешной инсталляции, следует выполнить htop.

Дополнительные ссылки:

вторник, 28 сентября 2010 г.

Заметки по MySQL

1) Подключение к базе без ввода пароля:

mysql -u application -papplication


2)

select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'your_schema_name';

Автоматическая генерация Excel-файлов

В ходе работы как-то возникла необходимость автоматического создания Excel-файла на основе заданного шаблона и подстановка в него заданных значений. Каждый файл должен иметь уникальное имя.

понедельник, 27 сентября 2010 г.

Заметки по ORACLE

0) Подключение под SYSDBA:
1) Изменение пароля для схемы IAMUSER на NEWPASSWD:

ALTER USER IAMUSER IDENTIFIED BY NEWPASSWD;

2) Просмотр активных сессий пользователя IAMUSER:

SELECT * FROM V$SESSION WHERE status='ACTIVE' AND username='IAMUSER';

3) Создание схемы IAMUSER с паролем PASSWD, раздача ей прав (CONNECT, RESOURCE):

CREATE USER IAMUSER IDENTIFIED BY PASSWD DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP";
GRANT "CONNECT" TO IAMUSER;
GRANT "RESOURCE" TO IAMUSER;

4) Несколько консольных команд для работы с Enterprise Manager:

emctl status dbconsole - проверка статуса запуска em
emctl start dbconsole - запуск em

5) Чтобы посмотреть детально значения даты-времени:

TO_CHAR(DATE_FIELD, 'DD.MM.YY HH24:MI')

6) Блокировка или разблокировка пользователя
SQL> ALTER USER username ACCOUNT LOCK;
SQL> ALTER USER username ACCOUNT UNLOCK;

7) Как убить запрос 
SELECT sid, serial#, status, server
FROM v$session
WHERE username = 'JWARD'

ALTER SYSTEM KILL SESSION 'sid, serial'

8) Количество подвисших запросов можно подсмотреть в системной вьюшке:
SELECT COUNT(last_call_et) FROM gv$session WHERE status='ACTIVE' AND last_call_et>=10 AND username IS NOT NULL
Сами же запросы (если есть повод реагировать и шевелиться дальше) выковыриваем более детально так:
SELECT username, machine, last_call_et, (SELECT sql_text FROM gv$sql WHERE sql_id=s.sql_id AND inst_id=s.inst_id) sql_text 
FROM gv$session s 
WHERE 
status='ACTIVE'
AND last_call_et>=10 
AND username IS NOT NULL
 
9. Вывод заблокированных объектов ORACLE:
select     oracle_username || ' (' || s.osuser || ')' username
,  s.sid || ',' || s.serial# sess_id
,  owner || '.' || object_name object
,  object_type
,  decode( l.block
,       0, 'Not Blocking'
,       1, 'Blocking'
,       2, 'Global') status
,  decode(v.locked_mode
,       0, 'None'
,       1, 'Null'
,       2, 'Row-S (SS)'
,       3, 'Row-X (SX)'
,       4, 'Share'
,       5, 'S/Row-X (SSX)'
,       6, 'Exclusive', TO_CHAR(lmode)) mode_held
from       v$locked_object v
,  dba_objects d
,  v$lock l
,  v$session s
where      v.object_id = d.object_id
and        v.object_id = l.id1
and        v.session_id = s.sid
order by oracle_username
,  session_id

9) -- Показывает список пользователей определенных в базе данных
-- и показывает из временные табличные пространства и табличное
-- пространство по-умолчанию 
SET LINESIZE 145
SET PAGESIZE 9999
SET VERIFY   off

COLUMN username             FORMAT a15  HEAD 'Username'
COLUMN account_status       FORMAT a17  HEAD 'Status'
COLUMN expiry_date                      HEAD 'Expire Date'
COLUMN default_tablespace   FORMAT a25  HEAD 'Default Tbs.'
COLUMN temporary_tablespace FORMAT a10  HEAD 'Temp Tbs.'
COLUMN created                          HEAD 'Created On'
COLUMN profile              FORMAT a10  HEAD 'Profile'
COLUMN sysdba               FORMAT a6   HEAD 'SYSDBA'
COLUMN sysoper              FORMAT a7   HEAD 'SYSOPER'

SELECT DISTINCT
       A.USERNAME USERNAME, 
       A.ACCOUNT_STATUS ACCOUNT_STATUS,
       TO_CHAR(A.EXPIRY_DATE, 'DD-MON-YYYY HH24:MI:SS') EXPIRY_DATE,
       A.DEFAULT_TABLESPACE DEFAULT_TABLESPACE,
       A.TEMPORARY_TABLESPACE TEMPORARY_TABLESPACE,
       TO_CHAR(A.CREATED, 'DD-MON-YYYY HH24:MI:SS') CREATED,
       A.PROFILE PROFILE,
       DECODE(P.SYSDBA,'TRUE', 'TRUE','') SYSDBA,
       DECODE(P.SYSOPER,'TRUE','TRUE','') SYSOPER
FROM DBA_USERS A, 
     V$PWFILE_USERS  P
WHERE P.USERNAME (+) = A.USERNAME 
ORDER BY USERNAME

Размер и свободное место для всех табличных пространств 
SELECT a.tablespace_name, "Free, MB", "Total, MB" FROM
  (SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Total, MB" FROM dba_data_files GROUP BY tablespace_name
  UNION
  SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Total, MB" FROM dba_temp_files GROUP BY tablespace_name) a,
  (SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024) AS "Free, MB" FROM dba_free_space GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name (+)
ORDER BY a.tablespace_name;

четверг, 23 сентября 2010 г.

Проблема с подключением на сайты антивирусов

Часто приходилось сталкиваться с проблемой, когда ПК, зараженный вирусом, не позволяет зайти на сайты антивирусных программ В Интернет, таких как: Dr.Web, Kaspersky, Nod. После чистки ПК и удаления всех вирусов проблема подключения на указанные сайты может остаться. Решить проблемы можно с помощью запуска следующего скрипта в AVZ:

begin
SearchRootkit(true, true);
SetAVZGuardStatus(True);
QuarantineFile('c:\windows\system32\drivers\synsenddrv.sys','');
QuarantineFile('c:\docume~1\user\locals~1\temp\synsql.exe','');
QuarantineFile('c:\windows\system32\16d6697f.exe','');
QuarantineFile('c:\windows\system32\sdra64.exe','');
DeleteFile('c:\windows\system32\drivers\synsenddrv.sys');
DeleteFile('c:\docume~1\user\locals~1\temp\synsql.exe');
DeleteFile('c:\windows\system32\16d6697f.exe');
DeleteFile('c:\windows\system32\sdra64.exe');
RegKeyParamDel('HKEY_CURRENT_USER','Software\Microsoft\Windows\CurrentVersion\Run','synsql');
BC_ImportAll;
ExecuteSysClean;
BC_DeleteSvc('synsend');
BC_Activate;
ExecuteRepair(19);
ExecuteRepair(20);
RebootWindows(true);
end.

После перезагрузки компьюетра выполнить:

begin
CreateQurantineArchive(GetAVZDirectory+'quarantine .zip');
end.

Также может помочь чистка ветки реестра:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes\]

воскресенье, 19 сентября 2010 г.

CentOS 5.5 (Final) + OpenVZ

Небольшая статья о том, как я устанавливал OpenVZ на CentOS 5.5 (Final).
1) Для начала необходимо установить репозиторий OpenVZ. В своей работе с Linux я использую установщик пакетов yum, поэтому в статье буду использовать именно этой утилитой. 

cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo

2) Переходим к установке ядра OpenVZ, выполняем:

yum install ovzkernel [flavor]

Здесь вместо [flavor] должен стоять параметр устанавливаемого ядра. Этот параметр выбирается исходя из следующих условий, который подробно можно узнать на http://wiki.openvz.org/Kernel_flavors. Исходя из целей виртуализации, мной был выбрано значение PAE.

3) Далее необходимо убедиться, что ядро прописалось в загрузчик (grub). Просмотрим файл /boot/grub/grub.conf, в нем должно примерно следующее:

title Fedora Core (2.6.8-022stab029.1)
root (hd0,0)
kernel /vmlinuz-2.6.8-022stab029.1 ro root=/dev/sda5 quiet rhgb vga=0x31B
initrd /initrd-2.6.8-022stab029.1.img

Внесем несколько изменений, чтобы OpenVZ корректно запускалось на нашей CentOS.

4) На вики, посвященной OpenVZ, говориться о достаточно большом количестве параметров, который должны быть изменены в /etc/sysctl.conf для корректной работы. Но мне было достаточно установить 1 для net.ipv4.ip_forward.

5) Теперь необходимо отключить SELinux в файле /etc/sysconfig/selinux с помощью команды:

SELINUX=disabled

6) Предварительные настройки операционной системы завершены,выполним перезагрузку:

reboot -f

7) После перезагрузки переходим к настройке виртуальных машин. Сначала скачаем шаблон, который будем устанвливать на нашу первую виртуалку:

cd /vz/template/cache
wget http://download.openvz.org/template/precreated/contrib/centos-5-i386-default.tar.gz

Как видно, устанавливаем centos-5-i386-default. Посный список возможных шаблонов есть на сайте http://wiki.openvz.org/Download/template/precreated.

8) Теперь будем устанавливать непосредственно виртулку. Для этого выполняем команду:

vzctl create 101 -–ostemplate centos-5-i386-default -–config vps.basic

На этом этапе у меня были проблемы с поиском конфигурационного файла. Но исходя их сообщений системы в каком именно файле она ищет конфигурацию, копировал содержимое и радовался установке.

Значение 101 - выбрано случайным образом, но оно должно быть уникальным для контейнеров, развернутых на одной ОС.

9) Установим запуск созданной виртуалки при запуске ОС:

vzctl set 101 -–onboot yes -–save

10) Пропишем название хоста и IP-адрес:

vzctl set 101 –-hostname testvirtual –-save
vzctl set 101 –-ipadd 192.168.0.101 –-save

11) Установим количество сокетов и сервером имен:

vzctl set 101 –-numothersock 120 –-save
vzctl set 101 –-nameserver 213.133.98.98 –-nameserver 213.133.99.99 –save

12) Запустим созданную виртуалку:

vzctl start 101

13) Установим пароль для пользователя root:

vzctl exec 101 passwd

14) Подключимся к виртуалке:

vzctl enter 101

15) Для выхода использыем привычное

exit

16) Для просмотра списка запучещенных контейнеров:

vzlist

17) Для остановки, перезапуска или удаления виртуальной машины, исполуйте следущие команды:

vzctl stop 101
vzctl restart 101
vzctl destroy 101

Дополнительные ссылки:

суббота, 18 сентября 2010 г.

Статический адрес в Linux

Настройки присвоения IP-адресов хранятся в Linux, перейти в нее можно 
с помощью следующей команды:
cd /etc/sysconfig/network-scripts
Сами настройки хранятся в файле ifcfg-eth0. 
Пример обычно файла с заданием статического IP:
# File: ifcfg-eth0
#
#
DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
BOOTPROTO=static
ONBOOT=yes
#
# The following settings are optional
#
BROADCAST=192.168.1.255
NETWORK=192.168.1.0 
При динамическом выделении IP, файл буде выглядеть следующим образом:
#
# File: ifcfg-eth0
#
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes  
После смены конфигурации достаточно перегрузить сервис network:
service network restart