lunes, 29 de marzo de 2010

Uso del mandato WRKACTJOB

Uno de los mandatos más utilizados en el AS400 es el WRKACTJOB (Trabajar con Trabajos Activos), ¿Pero le sacamos todo el partido a este mandato?
En primer lugar comentar que este mandato es un consumidor de recursos, por tanto no es recomendable que estén varias personas ejecutándolo al mismo tiempo. La primera vez que usamos el mandato puede que nos salga una pantalla parecida a esta:
Esta nos muestra las opciones y las teclas de Función que podemos usar. Una vez tengamos soltura con esas opciones y funciones, podemos pulsar F21=Nondisplay instructions/keys para ocultarlas, de esta forma podemos ver más trabajos en la misma pantalla:

La primera vez que ejecutamos este mandato en nuestra sesión, se activan unas estadísticas que se actualizaran cada vez que pulsemos F5=Refresh, con lo que acumulara y hará las medias aritméticas de los valores de algunas columnas marcadas bajo la denominación Elapsed, como la del porcentaje de uso de CPU de los trabajos. En la parte superior tenemos el campo Elapsed time que nos indica el tiempo desde el ultimo reset de las estadísticas. También vemos CPU % que indica el total de uso de CPU del sistema para el total de procesadores que tengamos. El total de trabajos en el sistema se nos indica en el campo Active jobs.
Si pulsamos F10=Restart statistics, resetearemos las estadísticas a 0, esto nos puede servir para comprobar el consumo puntual de CPU (snapshot) de un trabajo.

También podemos utilizar F19=Start automatic refresh para dejar la pantalla en modo de refresco automático, que como si pulsáramos F5 cada n segundos, el valor por omisión esta indicado en el parámetro INTERVAL del mandato, por omisión es *PRV o sea el ultimo utilizado, aunque la primera vez son 300 segundos. Esto nos puede ser útil para controlar algún trabajo en concreto desde una pantalla.

Con F17=Top podemos ir al principio de pantalla y con F18=Bottom al final, esto nos sirve para movernos algo más rápido, sobre todo si tenemos muchos trabajos.

Con F11 podemos cambiar las vistas para ver más información sobre el trabajo, hay 3 vistas diferentes que aparecen cada vez que pulsamos la tecla de función.

El mandato WRKACTJOB permite filtrar por:
  • Nombre de subsistema (SBS) para por ejemplo ver solo los trabajos interactivos en el subsistema QINTER y/o QCTL:
    • WRKACTJOB SBS(QCTL QINTER)
  • Nombre de trabajo (JOB) para ver solo los trabajos que:
    • Empiecen por un nombrte:
      • WRKACTJOB JOB(MyJob*)
    • Trabajos del sistema:
      • WRKACTJOB JOB(*SYS)
    • O trabajos de subsistema activos:
      • WRKACTJOB JOB(*SBS)
  • Podemos filtrar por:
    • Uso de CPU (CPUPCTLMT), por ejemplo los trabajos que consumas mas de un 15% de CPU: WRKACTJOB CPUPCTLMT(15)
    • Tiempo de respuesta interactivo (RSPLMT) de una sesión (pantalla verde), por ejemplo una pantalla que tarde más de 5 minutos en ejecutar un programa/mandato: WRKACTJOB RSPLMT(300)
Otra opción muy interesante es el parámetro Sequence (SEQ) que nos permite ordenar por alguna de las columnas del mandato, un clásico es ordenar por consumo de CPU para averiguar que trabajo se nos esta llevando el procesador: WRKACTJOB SEQ(*CPU) o por Total de unidades de CPU consumidas (en segundos) WRKACTJOB SEQ(*CPUPCT). Para más información pulsar F1=Help sobre campo del parámetro y podremos ver una explicación más detallada de todas las opciones posibles.

Una opción que utilizo bastante es ordenar por una columna, combinándola con otras opciones explicadas, por ejemplo la de Status de los trabajos, para ello situamos el cursor encima del titulo de la columna y pulso F16=Resequence de esta forma puedo encontrar, más rápidamente, todos los trabajos que están en estado MSGW.
Nota: Tener en cuenta que si queremos ordenar por subsistema debemos situar el cursor encima de la columna Subsystem/Job, pero si queremos ordenar por nombre de trabajo deberemos situar el cursor encima del primer carácter del nombre de trabajo que aparezca en la pantalla.

Otra opción, poco conocida, es que el mandato WRKACTJOB oculta los trabajos de prearranque inactivos (PJ) o grupos de sesión inactivos (INT), es cuando pulsamos la tecla PetSys + opción 1 (Mayusc+Esc) o la tecla de Atención de Sistema (Esc). Para visualizarlos hemos de pulsar F14=Include, un ejemplo para el subsistema QSERVER:
WRKACTJOB SBS(QSERVER)
En esta pantalla solo vemos 5 trabajos, pero si pulsamos F14 nos aparecen más de 14 trabajos:

Finalmente podemos usar la tecla de función F15=Work with system status que ejecuta el mandato WRKSYSSTS que necesitaría un libro para explicar su utilidad, podéis consultar la siguiente entrada para tener alguna idea sobre el tema: Como saber si el AS400 necesita mas RAM

lunes, 8 de marzo de 2010

Configurar seguridad del sistema

Existe un  mandato para configurar automáticamente la seguridad básica del sistema. Ejecutándolo nos cambiará varios valores de sistema:
QALWOBJRST=*NONE
QAUTOCFG=0        
QAUTOVRT=0         
QDEVRCYACN=*DSCMSG
QDSCJOBITV=120    
QDSPSGNINF=1      
QINACTITV=60      
QINACTMSGQ=*ENDJOB
QLMTDEVSSN=1       
QLMTSECOFR=1       
QMAXSGNACN=3       
QMAXSIGN=3         
QRMTSIGN=*FRCSIGNON
QRMTSRVATR=0       
QSECURITY=50       
QVFYOBJRST=3       
QPWDEXPITV=60       
QPWDMINLEN=6 si es <6, u 8 si es <8
QPWDLMTCHR=Contenido del msgid CPXB302
QPWDLMTAJC=1     
QPWDLMTREP=2     
QPWDRQDDGT=1     
QPWDRQDDIF=1      
QPWDVLDPGM=*NONE


También desactivara la contraseña, con PASSWORD(*NONE), de los siguientes usuarios: QSYSOPR, QPGMR, QUSER, QSRV y QSRVBAS.
De esta forma evitamos que nadie se conecte al sistema utilizando estos perfiles.

Finalmente, si existe el diario de auditoria (QAUDJRN), ejecutará el mandato CHGSECAUD (Cambia auditoría de seguridad) que cambiara los siguientes valores de sistema: QAUDCTL=*AUDLVL y QAUDLVL=*DFTSET, que incluye la auditoria de todos los conceptos siguientes:
*ATNEVT, *CREATE, *AUTFAIL, *DELETE, *JOBDTA, *NETBAS, *NETCLU, *NETCMN, *NETFAIL,
*NETSCK, *OBJMGT, *OFCSRV, *OPTICAL, *PGMADP, *PGMFAIL,*PRTDTA, *SAVRST, *SECCFG, *SECDIRSRV, *SECIPC, *SECNAS, *SECRUN, *SECSCKD, *SECURITY, *SECVFY, *SECVLDL, *SERVICE, *SPLFDTA, *SYSMGT.

Para más información sobre estos valores buscad en el IBM iSeries Information Center 

Al ejecutar el mandato CFGSYSSEC aparecerá una pantalla que nos pedirá confirmación:
Es recomendable ejecutar este mandato con el sistema restringido y conectado con usuario *SECOFR.
Podemos modificar los valores por omisión de este programa, que nos interesen para nuestro sistema, recuperando, editando y creando nuestra propia versión.
Para recuperar el fuente del programa utilizar el mandato:
RTVCLSRC PGM(QSECCFGS) SRCFILE(MYSRCLIB/MYSRCFILE) SRCMBR(MYQSECCFGS)

lunes, 1 de marzo de 2010

Utilizar los menus de ayuda

Es interesante recordar los sistemas de ayuda para buscar un mandato y que nos pueden ser muy útiles, existen varias opciones:

Situar el cursor en la línea de mandatos del AS400, al pulsar F4 aparece el menú "Major Command Groups", también podemos acceder con GO MENU(MAJOR).
En el menú MAJOR podemos intentar buscar una opción que, por la descripción, pueda contener el mandato que estamos buscando.  Muchas veces nos aparecerán submenus. Las 3 primeras opciones, del menú MAJOR, son más interesantes ya que son búsquedas genéricas, el resto son temáticas. 

Un ejemplo si queremos visualizar el contenido de la cola de salida QGPL/QPRINT, seleccionaríamos la opción "11. Spooling Commands", a continuación "4. Output Queue Commands"  y finalmente "8. Work with Output Queue" que ejecuta el mandato que buscábamos WRKOUTQ, solo hace falta indicarle en el parámetro OUTQ la cola QPRINT y pulsar Intro. Evidentemente es más rápido acordarse del mandato WRKOUTQ OUTQ(QGPL/QPRINT), pero si no lo conocemos, pero si la manera de buscarlo, seguramente lo encontraremos.

Con la opción "1. Select Command by Name" podemos seleccionar por los caracteres con los que suponemos empieza el mandato. Por ejemplo si usamos DSP* (Display) nos mostrará la lista de mandatos utilizados para visualizar algo. Podemos utilizar directamente el mandato SLTCMD, o incluso mejor tecleando los caracteres iniciales del mandato y añadiendo el carácter * al final, desde la linea de mandatos, y pulsando Intro: Probad WRKJOB*.

La opción "2. Verb Commands" (VERB) nos lista un menú con los mandatos agrupados por verbo. Por ejemplo si queremos ver todos los mandatos para verificar el estado de algo (CMDVFY) utilizaremos la opción "85. Verify Commands".

Otra opción es "3. Subject Commands" (SUBJECT), con esta se nos muestra una lista de mandatos agrupados por la función que realizan. Un ejemplo seria ver todos los mandatos que se utilizan para gestionar un dispositivo, para ello seleccionaríamos la opción "89. Device Commands".

Darse cuenta que todos estos menús en la parte superior izquierda muestran el nombre del menú por lo que podemos acceder a ellos directamente con el mandato GO y el nombre de menú.

Todos los submenus tienen nombre para poder acceder a ellos directamente, siguen la filosofía de denominación del AS400, con lo que se nos facilita su búsqueda por "intuición". Por ejemplo queremos ver todos los mandatos (CMD) que se pueden utilizar para la definición (D) de un subsistema (SBS), pues nada tecleamos GO MENU(CMDSBSD), pulsamos Intro y "voilà":
 Nota: Los números de opción que se muestran es para la versión V5R4M0, pero pueden variar para otras versiones.