Tru64 ps -o args column length

Here is an issue I recently met. One of my colleagues wrote some years ago a script to manage oracle instances. The same script is used on AIX , Tru64 and HP-UX.

The problem is with the following function when on Tru64:

1
2
3
4
function f_psg {
typeset -x UNIX95=xpg4
ps -ef -o args=" " -o pid="" -o ppid="" | egrep "${1:-^}"
}

The first line of the function (line 2) is used to declare and export to the environment variable UNIX95 to xpg4, in order to get the same compatibilities on every system.

On AIX and HP-UX the function is efficient in every case, but with Tru64 if you want to use “args” and some other commands (pid and ppid), the output will be truncated to 16 characters:

# ps -ef -o args|grep ora_pmon

ora_pmon_BDDPRD05

ora_pmon_BDDPRD04

# ps -ef -o args -o pid|grep ora_pmon

ora_pmon_BDDPRD0       6713

ora_pmon_BDDPRD0       6753

As you can see, there is no way to know if the 1st line is BDDPRD05 or BDDPRD04 on the 2nd command. The script was working, but only if your oracle instance name is less than 8 characters.

I found 2 workarounds that are compatible with my other UNIX (so the same script can be used on every system).

The first one is to increase the column default length by labeling the column (I chose 20 characters) :

ps -ef -o args=”XXXXXXXXXXXXXXXXXXXX” -o pid=”” -o ppid=””

# ps -ef -o args="XXXXXXXXXXXXXXXXXXXX" -o pid="" -o ppid=""|grep ora_pmon
ora_pmon_BDDPRD05          6713          1
ora_pmon_BDDPRD04          6753          1

The second is the use arfgs at the end, so no limitation of 16 characters, the with awk I put the columns in the right order:

ps -ef  -o pid=”” -o ppid=”” -o args|awk ‘{print $3″\t”$1″\t”$2}’

# ps -ef  -o pid="" -o ppid="" -o args|awk '{print $3"\t"$1"\t"$2}' |grep ora_pmon
ora_pmon_BDDPRD05       6713    1
ora_pmon_BDDPRD04       6753    1

If you happen to know a easier way please post a comment.

Tru64 : format and mount floppy disk

I found this some years ago on a forum.
J’ai trouvé cette procédure il y a quelques années sur un forum.

Format the diskette in floppy drive floppy0:

Formatez la disquette dans le lecteur floppy0 :

# fddisk -fmt /dev/rdisk/floppy0c

Write a new disk label to a standard 3.5-inch diskette:

Il faut ensuite écrire le label du disque sur la disquette 3,5” :

# disklabel -wr floppy0 rx23

Create a new file system on the entire diskette, (c partition):

Créez un nouveau file system sur toute la disquette (partition c) :

# newfs /dev/rdisk/floppy0c

Mount the diskette drive on the /mnt mount point:

Montez la disquette sur le point de montage /mnt :

# mount /dev/disk/floppy0c /mnt

AIX "df" POSIX option

On AIX, when you run df, you get the used space in %

The simpler way to get it in KB (or any multiple) is to use the POSIX format option.

This option is common to many UNIX and UNIX like OS (Tru64, Lunix …), so it’s very usefull when writing generic scripts.

Sous AIX, lorsque vous faites un df vous avez l’espace utilisé en %

La façon la plus simple de l’afficher Ko (ou autre multiples) est d’utiliser l’option de formatage POSIX de df.

Cette option est commune à beaucoup d’UNIX et assimilés (Tru64, Linux …), ce qui est très utilise quand vous écrivez des scripts génériques.

#:/> df -kP
Filesystem    1024-blocks      Used Available Capacity Mounted on
/dev/hd4          1048576     44676   1003900       5% /
/dev/hd2          3145728   1690384   1455344      54% /usr
/dev/hd9var       1572864    774136    798728      50% /var
/dev/hd3          2097152   1376416    720736      66% /tmp
/dev/hd1          1048576      1044   1047532       1% /home
/proc                   -         -         -       -  /proc
/dev/hd10opt      5373952   5067176    306776      95% /opt
/dev/lv_ibm       1048576    183604    864972      18% /app

AIX (5.3) NFS tuning

For an AIX migration I needed to maximize my transfer rate on a NFS share (AIX iSCSI is not working with QNAP Turbo NAS).

An AIX expert (one of the name you can read on IBM Redbooks covers) gave a tuning advice:

Pour un migration AIX j’avais besoin de maximiser les taux de transfert vers un partage NFS (comme le iSCSI AIX ne fonctionne pas avec les Turbo NAS QNAP).

Un export AIX (un de ceux qu’on peut lire sur la couverture des Redbook IBM) m’a donné un conseil de tuning assez simple à mettre en place:

To display the current network and nfs settings :

Pour afficher les valeurs actuelles des settings réseau et nfs :

nfso -a
no -a

Set the new parameters:

Mettre en place les paramètres suivants :

nfso -o nfs_use_reserved_ports=1
no -o rfc1323=1
no -o udp_recvspace=262144
nfso -o nfs_v3_pdts=8

(this tuning will be effective only on the next nfs mount)

(ce tuning  ne sera effectif qu’au prochain montage nfs)

then mount your share  :

ensuite, montez vos partages :

mount -o vers=3 qnap1:/Public /mnt

Be sure to run enable rfc1323 before incresing the tcp and udp receiving buffers (tcp_recvspace and udp_recvspace).

Il faut impérativement activer rfc1323 avant d’augmenter les buffers de reception tcp et udp.

Tar Archive and compression

Sometimes when you are working on UNIX you only have the good old tar, compress, gzip and bzip2 commands (no gtar or zip).

If you need (for space issues for instance) to create a compressed archive of a directory, this is how you do it:

Lorsque vous travaillez sur UNIX, il arrive que vous n’ailliez que tar, compress, gzip et bzip2 (pas de gtar ou zip).

Si vous avez besoin (pour des problèmes de place par exemple) de créer une archive compressée d’un répertoire, voici comment faire :

tar cvfp - test_dir | gzip - > test_dir.tar.gz
tar cvfp - test_dir | compress - > test_dir.tar.Z
tar cvfp - test_dir | bzip2 - > test_dir.tar.bz2

With the basic options “compress” is the quickest way to do it but you’ll have a weak poor compression ratio.

Le plus rapide avec les options de base étant « compress » mais c’est aussi  celui qui donne le moins bon ratio de compression.