Este procedimiento sirve a aquellos administradores de un sistema SAS a determinar que sesión y que usuario pueden llegar a estar dando problemas al resto en un momento dado por estar consumiendo demasiado espacio en disco en el servidor.
Para poder ejecutarlo es necesario tener un usuario en el sistema operativo de la máquina SAS con permisos sudo
. Este procedimiento está, por tanto, dirigido a máquinas Linux y se lo debo a mi compañero y amigo Christian.
Tras logarnos nos adjudicamos permisos sudo: sudo su -
Nos dirigimos a la ruta donde está la work, típicamente /opt/sas/saswork/. En esta carpeta se encuentran almacenadas las carpetas Linux que contienen todos los datos almacenados en todas las work de todas las sesiones SAS abiertas en ese momento por todos los usuarios en esa máquina. Listamos los nombres de esas work y determinamos cuales pueden ser más grandes y dar problemas, por ejemplo hacemos un grep para coger aquellas sesiones que están expresadas en Gb: du -sh * | grep G
Podemos ver que efectivamente las work están almacenadas en esa ruta de nuestro servidor si desde Enterprise Guide sacamos las propiedades de nuestra work con el botón derecho. La ruta que nos indica es exactamente esa.
Finalmente para identificar al usuario ‘infractor’ hacemos un grep del log de su sesión buscando su CLIENTMACINE, que no es más que su identificador de usuario. Se puede hacer también un grep a CLIENTUSERID que contiene el nombre del usuario:
grep CLIENTUSERID SASApp_WorkspaceServer_2018-11-07_sas_5889.log
En el caso de que estuviéramos buscando una sesión que se haya quedado colgada la tarea de identificarla es siempre muy fácil si los usuarios ejecutan un %put &sysjobid;
porque reflejará el PID de esa tarea en el log y sabremos que tarea matar. Lo realmente idóneo es incluir esta instrucción en el autoexec.sas.