jueves, 30 de julio de 2015

Como visualizar el full path (camino completo) de un PID con el comando ps

Usualmente, en Solaris al tratar de obtener información para un proceso, por ejemplo el 333, veremos una salida como la siguiente:
root@serverx # ps -ef | grep 333
  oracle   342   333   0 10:36:03 pts/2       1:34 /oracle/product/11.2.0/dbhome_1/jdk/bin/sparcv9/java -server -Xmx384M -XX:MaxPe
  root 22502 12423   0 12:55:22 pts/3         0:00 grep 333
  oracle   333     1   0 10:36:02 pts/2       0:19 /oracle/product/11.2.0/dbhome_1/perl/bin/perl /oracle/product/11.2.0/dbhome_1/b
  oracle   348   333   0 10:36:04 pts/2       0:49 /oracle/product/11.2.0/dbhome_1/bin/emagent
  oracle 22333     1   0 12:54:55 ?           0:00 oracleDBGE (LOCAL=NO)
root@serverx #
Cuando en realidad nos gustaría ver algo como esto:
root@serverx # /usr/ucb/ps auxww | grep 333
oracle   24333  0.0 27.12540935222219144 ?        S 13:00:21  0:00 oracleDBGE (LOCAL=NO)
oracle   25333  0.0 27.12540616822215688 ?        S 13:03:35  0:00 oracleDBGE (LOCAL=NO)
oracle     333  0.0  0.12310419984 pts/2          S 10:36:02  0:20 /oracle/product/11.2.0/dbhome_1/perl/bin/perl /oracle/product/11.2.0/dbhome_1/bin/emwd.pl dbconsole /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/emdb.nohup
oracle   22333  0.0 27.12541208022221704 ?        S 12:54:54  0:05 oracleDBGE (LOCAL=NO)
root     25387  0.0  0.0 1640 1208 pts/3          S 13:03:38  0:00 grep -i 333
root@serverx #
La diferencia aquí es que el output de la primera salida esta truncado, sin dejarnos saber que archivo está utilizando nuestra base de datos. Gracias la salida de nuestro segundo ps podemos ver que el archivo utilizado es el </oracle/product/11.2.0/dbhome_1/bin/emwd.pl>. Para el mismo fin, podemos utilizar el comando pfiles:
root@serverx # pfiles 333
333:    /oracle/product/11.2.0/dbhome_1/perl/bin/perl /oracle/product/11.2.0/d
  Current rlimit: 1024 file descriptors
   0: S_IFREG mode:0755 dev:85,105 ino:158097 uid:101 gid:101 size:39794
      O_RDONLY|O_LARGEFILE FD_CLOEXEC
      /oracle/product/11.2.0/dbhome_1/bin/emwd.pl
   1: S_IFREG mode:0640 dev:85,105 ino:349552 uid:101 gid:101 size:31604432
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/emdb.nohup
   2: S_IFREG mode:0640 dev:85,105 ino:349552 uid:101 gid:101 size:31604432
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/emdb.nohup
   3: S_IFREG mode:0640 dev:85,105 ino:146775 uid:101 gid:101 size:13
      O_RDONLY|O_LARGEFILE FD_CLOEXEC
      /oracle/product/11.2.0/dbhome_1/sysman/config/emca.map
   4: S_IFREG mode:0640 dev:85,105 ino:349552 uid:101 gid:101 size:31604432
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/emdb.nohup
   5: S_IFREG mode:0640 dev:85,105 ino:349737 uid:101 gid:101 size:0
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/nfsPatchPlug.log
root@serverx # 
Como última opción adicional, les recomiendo el comando pargs, donde lo veremos expresado de la siguiente manera:
root@serverx # pargs 333
333:    /oracle/product/11.2.0/dbhome_1/perl/bin/perl /oracle/product/11.2.0/dbhome_1/b
argv[0]: /oracle/product/11.2.0/dbhome_1/perl/bin/perl
argv[1]: /oracle/product/11.2.0/dbhome_1/bin/emwd.pl
argv[2]: dbconsole
argv[3]: /oracle/product/11.2.0/dbhome_1/serverx_gecap/sysman/log/emdb.nohup
root@serverx #

No hay comentarios:

Publicar un comentario