Grep процесс с использованием сценария оболочки

Я хочу передать вывод sql-запроса команде aix, позже команда должна 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: l061749@pts/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)

ИЗ ЭТОГО ГРЕПА АДРЕС 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)

ПОЖАЛУЙСТА СДЕЛАЙ ВСЕ НЕОБХОДИМОЕ.

СПАСИБО И РЕГИСТРАЦИЯ SURESH

1 ответ

В AIX команда lsof должна запускаться от root, иначе вы получите сообщение "Permission denied".

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

licensed under cc by-sa 3.0 with attribution.