Warning: Parameter 1 to behaviorsPagesStatiques::addTplPath() expected to be a reference, value given in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php on line 304

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/public/lib.urlhandlers.php on line 85

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 273
Tag - AIX - Flyou.net [Dev] : Développements

Aller au contenu | Aller au menu | Aller à la recherche

Flyou.net [Dev] : Développements

mardi 31 juillet 2012

Retrouver ses Librairies

Comme bien souvent quand on écrit un script en Shell, on se pose la question des fichiers de paramètres et régulièrement on en arrive à gérer le petit -c configFile ou -f configFile. Cependant, lorsque des librairies sont à charger on veut être sûr de là où elles sont.

Dans mon cas, je mets mes librairies dans un sous répertoire du script à appeler. C'est classic et simple. Par contre, là où ça devient un brin chiant, c'est quand le file system contenant le script est truffé de liens symboliques et que le script est appelé via un lien ; une fois sur deux on retrouve pas ses petits.

J'ai donc pris l'habitude de commencer chacun de mes scripts avec les lignes suivantes (qui fonctionnent avec un vieux KSH ou Bash (et même sur AIX) :

__sName="${0}"; __pName="${0}";
if [ -L "${0}" ]; then
    __="$(command -v "readlink")"
    if [ "readlink" = "${__##*/}" ]; then
        __sName="$(readlink -m "${__sName}")"
    else
        __sName="$(set -- $(LC_ALL=C file "${0}"); echo ${5:1:$((${#5} - 2))})"; __sName="$(dirname "${__pName}")/$(dirname "${__sName}")/${__sName##*/}"
    fi
fi
__pName="$( cd "${__sName%/*}" ; pwd )"; __sName="${__pName}/${__sName##*/}"; __fName="${__sName##*/}"

Ainsi, je peux charger ce que j'ai besoin avec un . ${__pName}/lib/F01/common.lib

Donc :

  • __pName contient le chemin absolu du script (avec les liens suivis et tout et tout),
  • __sName contient le chemin complet et nom du script (avec les liens résolus, donc absolu),
  • __fName contient le nom final du script (et pas le nom du lien si appelé par un lien).

lundi 26 septembre 2011

Comment déterminer les répertoires associés à un disque sur AIX

Alors qu'il y a peu, je me posais la question inverse, à savoir : Comment déterminer un disque en partant d'un répertoire sur AIX, j'ai aujourd'hui la problématique inverse et ça fait chier !

Donc pour pas perdre de temps voici comment faire simple :

# r='hdisk5';for vg in $(lsvg); do lsvg -l $vg | tail +3 | awk '{print $1,$NF}' | while read dsk lv; do if lslv -l $dsk|grep $r>/dev/null; then echo "$vg - $lv"; fi;done; done
appvg - N/A
appvg - /var/mqm
appvg - /opt/IBM/ITM
appvg - /u01
appvg - /app_nfs

On remplace le r=blabla et on lance en root évidemment.

mercredi 20 juillet 2011

Comment déterminer un disque en partant d'un répertoire sur AIX

Oui, bon alors, il y en a qui vont dire : "Ton titre, il est nul, on ne comprend rien". C'est probable, mais c'est surtout un pense-bête pour moi-même.

Donc admettons que nous connaissions le répertoire /opt/WebSphere61, un simple df me donne quelques informations :

   # df -k /opt/WebSphere61
   Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
   /dev/was61log     4128768    344040   92%     2370     3% /opt/WebSphere61

Cependant je n'ai toujours par connaissance du disque. Voyons si lsfs peut nous aider :

# lsfs
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/hd4        --         /                      jfs2  131072  --         yes  no 
/dev/hd1        --         /home                  jfs2  65536   --         yes  no 
/dev/hd2        --         /usr                   jfs2  7208960 --         yes  no 
/dev/hd9var     --         /var                   jfs2  1114112 --         yes  no 
/dev/hd3        --         /tmp                   jfs2  2162688 --         yes  no 
/dev/hd11admin  --         /admin                 jfs2  262144  --         yes  no 
/proc           --         /proc                  procfs --      --         yes  no 
/dev/hd10opt    --         /opt                   jfs2  9699328 --         yes  no 
/dev/was61log   --         /opt/WebSphere61       jfs2  14548992 rw         yes  no 
/dev/lvcode     --         /code                  jfs2  20971520 rw         no   no 

Donc pas mieux... Mais pas pire non plus...

D'où, deux choix, je me farci tous les VGs à la main pour déterminer le LV en fonction du répertoire cherché, comme ça :

# lsvg
rootvg
appvg
datavg

# lsvg -l rootvg
rootvg:
...
# lsvg -l  appvg
appvg:
...
# lsvg -l  datavg
datavg:
...
was61log            jfs2       63      63      1    open/syncd    /opt/WebSphere61
...

Ou alors, je suis une faignasse et je tape :

# for vg in $(lsvg); do echo "${vg}: "; lsvg -l "${vg}" grep /opt/WebSphere61; done
rootvg: 
appvg: 
datavg: 
was61log            jfs2       63      63      1    open/syncd    /opt/WebSphere61

Me reste plus qu'un petit lslv et pis c'est tout :

# lslv -l was61log
was61log:/opt/WebSphere61
PV                COPIES        IN BAND       DISTRIBUTION  
hdisk5            063:000:000   100%          000:063:000:000:000 

Donc mon répertoire est sur le disk 5...

Bon je suis sympa, il y a plus simple :

# r="/opt/WebSphere61";for vg in $(lsvg); do a=$(lsvg -l $vg | awk -vrep=$r '($0 ~ rep){ print $1}'); [[ -z $a ]] || lslv -l $a;done
was61log:/opt/WebSphere61
PV                COPIES        IN BAND       DISTRIBUTION  
hdisk5            063:000:000   100%          000:063:000:000:000 

mercredi 4 mai 2011

Lire une page de man (non installée) en local (sur AIX)

Bon comme sur AIX, je me trimballe du Bash 3.0, autant dire que le "parameter expansion" est quasi inexistant. Donc quand on a pas le droit d'installer un Bash 4, on le colle dans un répertoire quelconque. Oui mais pour lire la page de man qui n'est pas installée ?

man -m -M ../myAIXBash4/opt/freeware/man/ bash
-M PATH pour indiquer le path de la page de man. On ne met surtout pas : ../myAIXBash4/opt/freeware/man/man1/ !
-m pour ne chercher que dans le path indiqué par le -M
la page cherchée

mercredi 10 septembre 2008

Comment savoir si mon AIX ou mon binaire est en 64bits ou 32bits ?

Comme je l'ai écrit dans ce billet Les joies du 64 bits sous AIX avec WebSphere voici quelques commandes à se rappeler :

  • Savoir si un binaire est compilé en 64 bits ?
$ dump -X64 -H path_to_binary
  • Savoir si un binaire est compilé en 32 bits ?
$ dump -X64 -H path_to_binary
  • Savoir si mon hardware est en mode 64 bits ?
$ getconf HARDWARE_BITMODE
  • Savoir si mon Kernel est en mode 64 bits ?
$ getconf KERNEL_BITMODE