2020年9月19日土曜日

SAS9のプロセスから環境変数の設定を生成

何かのスクリプトを使うときに億劫に感じるのが設定です。で考えたのが動いているプロセスから主要なプロダクトのディレクトリを探す方法です。
  1. #!/bin/sh  
  2.   
  3. function variable() { 
  4.     TEMPLSIT=`mktemp --tmpdir=/var/tmp XXX.sh` 
  5.  
  6.     while read var cmd depth 
  7.     do 
  8.         ps --no-headers --format cmd -C $cmd | \ 
  9.         awk -vcmd=$cmd '{ for(i = 1; i <= NF; i++) { if (index($i, cmd) > 0) { print $i; exit} } }' | \  
  10.         awk -vd=$depth '{ n = split($1, a, "/"); for (i = 2; i < (n + d); i++) { printf("/%s", a[i]) } print ""; }' | \  
  11.         awk -vvar=$var '{ printf("export %s=%s\n", var, $1 ) }'  
  12.     done << _EOF_  
  13. SAS_HOME   sasauth           -4  
  14. SAS_CONFIG MetadataServer.sh -3  
  15. LSF_HOME   mbatchd           -3  
  16. PM_HOME    jfd               -3  
  17. RTM_HOME   lsfpollerd        -2  
  18. GMS_HOME   gabd              -1  
  19. _EOF_  
  20.   
  21.     rm -f $TEMPLSIT  
  22. }  
  23.   
  24. variable  
実行すると環境変数の定義を生成します。
  1. [root@dwtcjp conf]# sh variable.sh  
  2. export SAS_HOME=/SAS/SAS_HOME  
  3. export SAS_CONFIG=/SAS/SAS_CONFIG  
  4. export LSF_HOME=/SAS/LSF_HOME  
  5. export PM_HOME=/SAS/PM_HOME  
  6. export RTM_HOME=/SAS/RTM_HOME  
  7. export GMS_HOME=/SAS/LSF_HOME/gms