2013-09-27 2 views
-3

Я хочу передать вывод SQL запроса к команде Aix, позже команда должна Grep процессов, пока условие не встречалось:Grep процесс, используя сценарий оболочки

ОБРАЗЕЦ ЗАПРОС:

SQL> select vp.spid,vs.process,to_char(logon_time,'DD-MON-YYYY HH24:MI:SS') Logon_Time 
    2 from v$process vp, v$session vs 
    3 where 
    4 vp.addr = vs.paddr and 
    5 vs.process in 
(select Process 
    6 7 from v$session where username in ('SYS','SYSTEM','OPS$ORACLE') 
    8 and logon_time >= sysdate-0.010416667 
    9 and upper(Program) not like 'ORAAGENT%' 
10 and upper(Program) not like 'EMAGENT%' 
11 and upper(Program) not like 'RMAN%' 
and upper(Program) not like 'OMS%' 
12 13 and upper(Program) not like 'YRSUPP%'); 

ВЫХОД :

SPID      PROCESS     LOGON_TIME 
------------------------ ------------------------ -------------------- 
18022440     22872252     27-SEP-2013 11:18:01 

GREP команда должна быть переработаны $ 8 ЗНАЧЕНИЯ нЕ рАВНО SSHD: затем переключитесь LSOF -I КОМАНДЫ:

SQL> !ps -ef|grep 22872252 
    oracle 18022440 22872252 0 11:18:01  - 0:00 oracleDSPD21 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) 
    oracle 20119722 22872252 0 11:41:32 pts/1 0:00 grep 22872252 
    oracle 22872252 30605374 0 11:18:01 pts/1 0:00 sqlplus 

SQL> !ps -ef|grep 30605374 
    oracle 20643994 22872252 0 11:41:51 pts/1 0:00 grep 30605374 
    oracle 22872252 30605374 1 11:18:01 pts/1 0:00 sqlplus 
    oracle 30605374 11993194 0 11:07:31 pts/1 0:00 -ksh 

SQL> !ps -ef|grep 11993194 
    root 11993194 15925354 0 11:07:31 pts/1 0:00 sudo su - oracle 
    oracle 19791924 22872252 0 11:42:08 pts/1 0:00 grep 11993194 
    oracle 30605374 11993194 0 11:07:31 pts/1 0:00 -ksh 

SQL> !ps -ef|grep 15925354 
    oracle 10092584 22872252 0 11:42:29 pts/1 0:00 grep 15925354 
    root 11993194 15925354 0 11:07:31 pts/1 0:00 sudo su - oracle 
l061749 15925354 11075676 0 11:07:27 pts/1 0:00 -ksh 

ЗДЕСЬ Я ПОЛУЧИЛ SSHD:

SQL> !ps -ef|grep 11075676 
l061749 11075676 20447276 0 11:07:27  - 0:00 sshd: [email protected]/1 
l061749 15925354 11075676 0 11:07:27 pts/1 0:00 -ksh 
    oracle 20250734 22872252 0 11:42:57 pts/1 0:00 grep 11075676 

ДЛЯ SSHD ПРОЦЕССА нужно использовать следующую команду:

SQL> !lsof -i|grep 11075676 
lsof: WARNING: can't open /home/oracle/.lsof_ohpr420: Permission denied 
sshd  11075676 l061749 3u IPv4 0xf1000e0007dcb3b8 0t50893 TCP ohpr420.rcc.nsw.westpac.com.au:ssh->10.120.119.76:egptlm (ESTABLISHED) 

ОТ ЭТОГО GREP IP-адрес:

SQL> !lsof -i|grep 20447276 
lsof: WARNING: can't open /home/oracle/.lsof_ohpr420: Permission denied 
sshd  20447276  root 3u IPv4 0xf1000e0007dcb3b8 0t51813 TCP ohpr420.rcc.nsw.westpac.com.au:ssh->10.120.119.76:egptlm (ESTABLISHED) 

ПОЖАЛУЙСТА DO НУЖНО.

БЛАГОДАРНОСТЬ И REGARDS Суреш

+3

Я улучшил отступ вашего вопроса, но я не буду конвертировать ВСЕ CAPS в обычный английский. Измените свой вопрос соответствующим образом. –

+0

Я хочу передать вывод sql-запроса в команду aix, позже команда должна обработать процессы до тех пор, пока не будет выполнено условие: – user2822119

ответ

0

В AIX, команда Lsof должна быть запущена суперпользователем, в противном случае вы получите «Отказано в доступе» сообщение.

Хорошая статья, в которой используется команда lsof. «Кто использует мой порт?» (От AIX, Linux, пример Windows) »от http://www-01.ibm.com/support/docview.wss?uid=swg21264632

Смежные вопросы