jun 202016
 

Já aconteceu de você usar o comando host no SQL*Plus e não ter certeza se você esta em um shell novo ou se é o shell gerado pelo comando host ?

Comigo já aconteceu centenas de vezes, e o pior é quando isso acontece e você da o exit e desconecta do servidor… :-/

Mas o que podemos fazer nesses casos ?

É muito fácil !

No Linux toda vez que você abre uma sessão via SSH ou um Terminal, você cria um processo e esse processo recebe um ID, chamado de Process ID, ou PID.
Para descobrir seu pid é fácil:

[oracle@ol7 Desktop]$ echo $$
82477

Além do PID a sessão também registra um PPID, ou Parent Process ID, ou seja, o PID do processo pai dessa sessão.
Se você conectar via SSH em um servidor, o PPID é o Deamon SSHD.
Para descobrir seu PPID você pode fazer o seguinte

[oracle@ol7 Desktop]$ echo $PPID
2771

Uma maneira que gosto muito de ver o PPID, é usar o ptree, que mostra de uma maneira mais gráfica a hierarquia de processos.

[oracle@ol7 ~]$ pstree -pn $PPID
sshd(1723)───bash(1724)───pstree(1745)

Ele mostra o pai daquele processo, e todos os filhos que ele tem.

Se você estiver num terminal do Gnome, o PPID é o Gnome. Nesse caso ele tem vários filhos.

[oracle@ol7 Desktop]$ pstree -pn $PPID
gnome-terminal-(2771)─┬─{gnome-terminal-}(2772)
                      ├─{gnome-terminal-}(2773)
                      ├─gnome-pty-helpe(2774)
                      ├─bash(2775)───sqlplus(4378)───oracle_36782_or(36782)
                      ├─{gnome-terminal-}(2777)
                      ├─bash(33534)───rman(33920)
                      └─bash(82477)───pstree(86102)

Tendo isso em mente, como saber se estamos dentro de um “host” do SQL*Plus ?

É muito fácil, usando o ptree por exemplo, se estivermos dentro de um “host” do SQL*Plus o processo pai vai ser o SQL*Plus:

[oracle@ol7 ~]$ pstree -pn $PPID
sqlplus(1826)─┬─oracle(1827)
              └─bash(1828)───pstree(1842)

Caso contrário, vai ser algo do tipo:

[oracle@ol7 ~]$ pstree -pn $PPID
sshd(1723)───bash(1724)───pstree(1745)

Espero que tenham gostado !

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)