HP/UX compared to Tru64 ..

setld list = swlist

sysman = sam, see samlog for commands

useradd etc, vipw still works, use pwck to check for syntax errors

df = df, bdf (bdf looks like Tru64’s df)

/etc/default/security # Usually empty, contains security config.

Auditing: only on TRUSTED System in /.secure/etc/audfile*

use ‘sam’ to make a trusted system.

hwmgr show = ioscan , machinfo , ioscan -fk , ioscan -fun

dxkerneltuner = kmtune (text 11iv1) , kctune (11iv2)

MAKEDEV = mksf,lssf,insf,rmsf

rmsf -H

ioscan; insf = install new devices

ioscan -funeC disk # List Bootpath for disks ACPI

on console: map -r fs

/etc/rc.config = /etc/rc.config.d/*, actually rc.config is a script that sources ALL files in rc.config.c

Devices :

/dev/tape/c#t#d#[OPT]

| | |

| | - LUN

| ___ TARGET

| ____ INSTANCE (Controller)

sys_check = print_manifest, xstm , cfg2html

Man pages

HP/UX does not have an ‘apropos’ command but uses the default ‘man -k’ instead.

Create the apropos database with

catman -w

Make Posix-Shell a little more usable

Edit $HOME/.dtprofile, uncomment DTSOURCEPROFILE=true

$HOME/.profile must contain

ENV=$HOME/.shrc

export ENV

$HOME/.shrc contains

HISTFILE=~/.sh_history

HISTSIZE=500

-, +, bsp, space to enter ‘vi’ style history

Or even better with EMACS style :

Add to .shrc (.profile or /etc/profile are not always picked up)

set -o emacs

alias -x __A=`echo “\020”` # up arrow = ^p = back a command

alias -x __B=`echo “\016”` # down arrow = ^n = down a command

alias -x __C=`echo “\006”` # right arrow = ^f = forward a character

alias -x __D=`echo “\002”` # left arrow = ^b = back a character

alias -x __H=`echo “\001”` # home = ^a = start of line

---———–

You can also switch back and forth between ‘vi’ and ’emacs’ Mode

set -o vi # Switch to ‘vi’ Mode

set -o emacs #

LVM

# lvlnboot -v

Boot Definitions for Volume Group /dev/vg00:

Physical Volumes belonging in Root Volume Group:

/dev/dsk/c2t6d0 (10/0/15/0.6.0) – Boot Disk

Boot: lvol1 on: /dev/dsk/c2t6d0

Root: lvol3 on: /dev/dsk/c2t6d0

Swap: lvol2 on: /dev/dsk/c2t6d0

Dump: lvol2 on: /dev/dsk/c2t6d0, 0

Create a new Volumegroup

pvcreate (-f) /dev/rdsk/c2t5d0 # initalize Disk

mkdir /dev/cg01

mknod /dev/cg01/group c 64 0x010000 (0xNN0000 must be unique)

vgcreate (-l 4) (-f) vg01 /dev/dsk/c2t5d0 # -l N-devices max

lvcreate (-m 1) -l 100 vg01 # Create Volume with l extents

lvextend -m1 vg01 # Add mirror

lvextend -l 1000 # Increase size to 1000

lvreduce -l 500 # Shrink size to 500 with data loss

vgscan -a # Scan all disks for LVM data, add to /etc/lvmtab

vgdisplay -v # Display config for volgroup, shows volumes, too.

also see: pvmove on how to move extents from one disk to another

LVM: remove volumegroups

# vgdisplay -v /dev/vg01 | grep “LV Name”

LV Name /dev/vg01/lvol1

LV Name /dev/vg01/gugus

LV Name /dev/vg01/data

LV Name /dev/vg01/app

# lvremove -f /dev/vg01/lvol1

// The quick variant would be :

# vgdisplay -v /dev/vg01 | grep “LV Name” | xargs -n1 lvremove -f

# vgremove /dev/vg01

Volume group “/dev/vg01” has been successfully removed.

#

// also remove the /dev/vg01 directory !

# rm -rf /dev/vg01

LVM: Create and Delete a Mirror

# ioscan -funC disk

Class I H/W Path Driver S/W State H/W Type Description

=======================================================================

disk 0 10/0/14/0.0.0 sdisk CLAIMED DEVICE MITSUMI CD-ROM FX4820T!B

/dev/dsk/c0t0d0 /dev/rdsk/c0t0d0

disk 1 10/0/15/0.5.0 sdisk CLAIMED DEVICE QUANTUM Atlas4-9LVD

/dev/dsk/c2t5d0 /dev/rdsk/c2t5d0

disk 2 10/0/15/0.6.0 sdisk CLAIMED DEVICE QUANTUM Atlas4-9LVD

/dev/dsk/c2t6d0 /dev/rdsk/c2t6d0

# vgdisplay -v /dev/vg00 | grep Name

VG Name /dev/vg00

LV Name /dev/vg00/lvol1

LV Name /dev/vg00/lvol2

LV Name /dev/vg00/lvol3

LV Name /dev/vg00/lvol4

LV Name /dev/vg00/lvol5

LV Name /dev/vg00/lvol6

LV Name /dev/vg00/lvol7

LV Name /dev/vg00/lvol8

PV Name /dev/dsk/c2t6d0

# pvcreate -f /dev/rdsk/c2t5d0

# vgextend /dev/vg00 /dev/dsk/c2t5d0

Volume group “/dev/vg00” has been successfully extended.

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

# lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c2t5d0

The newly allocated mirrors are now being synchronized. This operation will

take some time. Please wait ….

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

# lvdisplay -v /dev/vg00/lvol1

--- Logical volumes —

LV Name /dev/vg00/lvol1

VG Name /dev/vg00

LV Permission read/write

LV Status available/syncd

Mirror copies 1

Consistency Recovery MWC

Schedule parallel

LV Size (Mbytes) 144

Current LE 36

Allocated PE 72

Stripes 0

Stripe Size (Kbytes) 0

Bad block off

Allocation strict/contiguous

IO Timeout (Seconds) default

--- Distribution of logical volume —

PV Name LE on PV PE on PV

/dev/dsk/c2t6d0 36 36

/dev/dsk/c2t5d0 36 36

--- Logical extents —

LE PV1 PE1 Status 1 PV2 PE2 Status 2

….

# lvreduce -m 0 /dev/vg00/lvol1

Logical volume “/dev/vg00/lvol1” has been successfully reduced.

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

# lvdisplay -v /dev/vg00/lvol1

--- Logical volumes —

LV Name /dev/vg00/lvol1

VG Name /dev/vg00

LV Permission read/write

LV Status available/syncd

Mirror copies 0

Consistency Recovery MWC

Schedule parallel

LV Size (Mbytes) 144

Current LE 36

Allocated PE 36

Stripes 0

Stripe Size (Kbytes) 0

Bad block off

Allocation strict/contiguous

IO Timeout (Seconds) default

--- Distribution of logical volume —

PV Name LE on PV PE on PV

/dev/dsk/c2t6d0 36 36

--- Logical extents —

LE PV1 PE1 Status 1

To Synchronize mirrored volumes use :

vgsync vg01 # Synchronize all LV’s in the vg

lvsync /dev/vg00/lvol1 # Sync this lv only

Splitting mirrors :

# lvsplit /dev/vg00/lvol1

Logical volume “/dev/vg00/lvol1b” has been successfully created with

character device “/dev/vg00/rlvol1b”.

Logical volume “/dev/vg00/lvol1” has been successfully split.

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

#

#

# fsck -F hfs /dev/vg00/rlvol1b

\\ /dev/vg00/rlvol1b

\\ Last Mounted on /stand

\\ Phase 1 - Check Blocks and Sizes

\\ Phase 2 - Check Pathnames

\\ Phase 3 - Check Connectivity

\\ Phase 4 - Check Reference Counts

\\ Phase 5 - Check Cyl groups

49 files, 0 icont, 28553 used, 115020 free (124 frags, 14362 blocks)

\\\\\* MARKING FILE SYSTEM CLEAN *****

\\\\\* FILE SYSTEM WAS MODIFIED *****

#

#

# mount -o ro /dev/vg00/lvol1b /mnt

// When you’re done you can merge the mirror again

# umount /mnt

# lvmerge /dev/vg00/lvol1b /dev/vg00/lvol1

Logical volume “/dev/vg00/lvol1b” has been successfully merged

with logical volume “/dev/vg00/lvol1”.

Logical volume “/dev/vg00/lvol1b” has been successfully removed.

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

// Be careful to lvmerge in the correct direction, LVM will merge either way !

LVM: Mirror the Bootdisk

/dev/rdsk/c2t6d0 is our original boot device.

# pvcreate -fB /dev/rdsk/c2t5d0

Physical volume “/dev/rdsk/c2t5d0” has been successfully created.

# vgextend vg00 /dev/dsk/c2t5d0

Volume group “vg00” has been successfully extended.

Volume Group configuration for /dev/vg00 has been saved in /etc/lvmconf/vg00.conf

# mkboot /dev/dsk/c2t5d0

# mkboot -a “hpux -lq” /dev/dsk/c2t5d0 # Update AUTO on both disks’s LIF Area

# mkboot -a “hpux -lq” /dev/dsk/c2t6d0

# vgdisplay -v | grep lvol

LV Name /dev/vg00/lvol1

LV Name /dev/vg00/lvol2

LV Name /dev/vg00/lvol3

LV Name /dev/vg00/lvol4

LV Name /dev/vg00/lvol5

LV Name /dev/vg00/lvol6

LV Name /dev/vg00/lvol7

LV Name /dev/vg00/lvol8

Now we have to mirror the volumes in the CORRECT order, else the mirror will not be bootable :

# vgdisplay -v | grep lvol | awk ‘{ print $3 }’ | xargs -n1 -Ixx lvextend -m 1 xx /dev/dsk/c2t5d0

or manually :

lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol2 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol4 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol5 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol6 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol7 /dev/dsk/c2t5d0

lvextend -m 1 /dev/vg00/lvol8 /dev/dsk/c2t5d0

The newly allocated mirrors are now being synchronized. This operation will

take some time. Please wait ….

Now one last thing, make the new mirror the alternate boot device :

# ioscan -funC disk

Class I H/W Path Driver S/W State H/W Type Description

=======================================================================

disk 0 10/0/14/0.0.0 sdisk CLAIMED DEVICE MITSUMI CD-ROM FX4820T!B

/dev/dsk/c0t0d0 /dev/rdsk/c0t0d0

disk 1 10/0/15/0.5.0 sdisk CLAIMED DEVICE QUANTUM Atlas4-9LVD

/dev/dsk/c2t5d0 /dev/rdsk/c2t5d0

disk 2 10/0/15/0.6.0 sdisk CLAIMED DEVICE QUANTUM Atlas4-9LVD

/dev/dsk/c2t6d0 /dev/rdsk/c2t6d0

# setboot -a 10/0/15/0.5.0

LVM: Disaster Recovery

Restore a single disk

umount /fs

vgchange -a n vg01

vgcfgrestore -n vg01 /dev/rdsk/c0t3d0

vgchange -a y vg01

.. now you have your volumes back and can newfs, restore and mount

Restore a mirror-disk

vgcfgrestore -F -n /dev/vg1 /dev/rdsk/c0t0d3 # Careful with -F, new disks work without it

vgchange -a y vg01

vgsync vg01

Filesystems

te mostly used Filesystems are HFS, VxFS.

HFS for /stand (which contains the kernel) - this is what usually is called UFS.

VxFS for the remaining Filesystems

VxFS requires an option in order to support ’large’ files > 2GB.

newfs -o largefiles /dev/vg01/rgugus

mount -o largefiles /dev/vg01/gugus /mnt

you can also change this later :

# fsadm -F vxfs /mnt

largefiles

# fsadm -F vxfs -o nolargefiles /mnt

# fsadm -F vxfs /mnt

nolargefiles

But beware - also change /etc/fstab or you’ll get in trouble upon boot:

# umount /mnt

# mount -o largefiles /dev/vg01/gugus /mnt

vxfs mount: mount option(s) incompatible with file system /dev/vg01/gugus

Loopbackmount

mount -F lofs /usr /mnt/xx

will mount the /usr filesystem under /mnt/xx again, without the use of a symlink.

One wonders what this is good for - perhaps access permissions, since this way

another directory structure is traversed.

Filesystems: Extending/Shrinking

Simply do :

lvextend -l 8000 /dev/vg01/gugus # Extend the logical volume

fsadm -b 8150000 /mnt # Extend the Filesystem

reducing is done by :

fsadm -b 8000 /mnt # Shrink the Filesystem

lvreduce -l 1000 /dev/vg01/gugus # Reduce(shrink) the volume

lvreduce will issue a warning, if either the target size is smaller than the filesystem and abort the operation. No data is lost.

It AWLAYS will issue a warning that data may be lost if you reduce a volume, you can safely ignore that message if you only use the volume for a filesystem.

Example:

# lvreduce -l 100 /dev/vg01/gugus

When a logical volume is reduced useful data might get lost;

do you really want the command to proceed (y/n) : y

Logical volume “/dev/vg01/gugus” has been successfully reduced.

Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf

You can (actually MUST , if you do not have the HP OnLineJFS License) also extend the Filesystem ‘offline’ :

umount /mnt

extendfs -F xvfs /dev/vg01/rgugus

mount /dev/vg01/gugus /mnt

To shrink the volume, you have backup, create a new filesystem and restore.

To remove a disk from a volume , use pvmove - which moves the extents

from the device to the remaining devices in the volume.

Filesystems: Backup/Restore

fbackup/frestore - like vdump/vrestore in Tru64, also backups ACLs.

dump, tar are also there, but you will loose ACLs when restoring data.

Create a Bootable Tape interactively (-i) , which boots interactively (-I) :

make_tape_recovery -iI (-A)

*NOTE* Itanium cannot boot from Tape. You’ll have to boot from the Installation CD and select recovery there, which then will use the data on your tape.

make_net_recovery -s … # Create recovery on the Network

make_sys_image # Create ‘CD’

Filesystems: Maintenance

Defragment using :

# fsadm -deDE /var

Backup/Restore using :

fbackup, frecover

Checking for errors

fsck -F hfs -o full /dev/vg00/lvol9 # or vxfs, -o full forces check

Swap

lvlnboot -v # displays lvm config (also swap device)

swapinfo -tm # Display swap in use

swapon /dev/vvg01/swapvol # Use LVM Volume

swapon -e /dev/dsk/c2t5d0 # Use rawdevice (at end of Volume)

swapon /dev/dsk/c2t5d0 # Use rawdevice

swapon -p 4 -l 4M /mnt # Use /mnt filesystem

System Partitions

See: parinfo, parmodify

Booting a PA-RISC Box

POST Power On SelfTest

BCH Boot Console Handler

ISL Initial System Load (also IPL)

hpux loads vmunix

vmunix the kernel

Poweron begins the Boot - you’ll have to press a key to enter the BCH.

There you can :

> help

> search ipl # Show all bootable devices

> path # Display current bootpath

> boot

> reset

ISL/IPL Commands :

ISL> hpux show autofile

ISL> hpux ls # view /stand

ISL> hpux -is # Boot single-user

ISL> hpux -lq # without LVM Quorum

ISL> hpux -lm # Without LVM (Maintenance Mode)

ISL> hpux /stand/vmunix.xx

ISL> exit

Set bootpath from Unix :

setboot -a x/x.x.x # Alternate

setboot -p x/x.x.x # Primary

Copy/View the LIF area :

# lifcp /dev/rdsk/c2t6d0:AUTO -

hpux

#

# lifls /dev/rdsk/c2t6d0

ODE MAPFILE SYSLIB CONFIGDATA SLMOD

SLDEV SLDRIVERS SLSCSI MAPPER IOTEST

PERFVER PVCU SSINFO HPUX ISL

AUTO LABEL

#

Booting Integrity/Itanium

Basically the same as for PA-RISC, but ISL is replaced with EFI, withe these commands :

map -b -r -fs # View bootable devices

lanboot select # View Network Interfaces, and let you select from which one to boot.

HPUX> showauto

HPUX> setauto “boot vmunix”

HPUX> boot vmunix -v # same flags as for PA-RISC (-is , -lq , -lm)

Startup

Startup is very much like Tru64 , in that it uses /sbin/rc3.d/* /etc/rc.config but there are some small differences :

- /etc/rc.config is actually a script which runs ALL configuration files from /etc/rc.config.d/

so when a rc script runs, it sees all variables - much like in Tru64 where all variables are

in a single file.

- /sbin/init.d/template - contains a template for start/stop scripts. Use that, it also contains

plenty comments to help you set things up correctly.

Networking: Basics

Specific commands are lanscan, lanadmin, linkloop, ndd

ioscan -funC lan # Check for interface

/etc/rc.config.d/netconf # IP configuration

/etc/rc.config.d/nddconf # Tunable Parameters

netconf:

INTERFACE_NAME[0]=“lan0”

IP_ADDRESS[0]=“155.208.129.13”

SUBNET_MASK[0]=“255.255.255.128”

ROUTE_DESTINATION[0]=default

ROUTE_GATEWAY[0]=155.208.129.1

ROUTE_COUNT[0]=1

ROUTE_DESTINATION[1]=“net 10.0.0.0”

ROUTE_GATEWAY[1]=155.208.129.1

ROUTE_COUNT[1]=2

To configure aliases, use the following style :

INTERFACE_NAME[0]=“lan0:0”

INTERFACE_NAME[0]=“lan0:1”

# ifconfig lan0:1 1.2.3.4 # Create an alias

# ifconfig lan0:1 0.0.0.0 # Delete the alias

for the route add it is important to specify a ‘count’ else you will get ‘Network is unreachable’ :

ifconfig lan0 128.1.2.1

ping 128.1.0.1 -> OK # This would also be the router for 10.x.x.x

route add net 10.0.0.0 128.1.0.1 1

ping 10.2.3.4 -> OK

Networking: Tuning

Use ndd

ndd -h to get a list of parameters

ndd -get /dev/ip

ndd -set /dev/ip

Watch out, ip_forwarding is ENABED by default.

Kernel: Build, Configure (PA-RISC)

You can simply use SAM , there are also explanations to the parameters.

If your new kernel does not boot, boot from the old kernel (kernel.prev)

# cd /stand

# mv system.prev system

# kmupdate /stand/vmunix.prev

# shutdown -ry 0

now you can use SAM to configure a new Kernel another time.

Manually :

# cd /stand/build

# /usr/sbin/config -c conf.SAM.c -l config.SAM.mk system.SAM

# kmupdate

Kernel: Build (Itanium)

kcweb ( -F or -c) -F = insecure

-c = create new Server Certificates

Will give you a WEB Gui , where you can configure and build a Kernel

kconfig

kcpath

kcmodule

kctune

kcusage

kcalarm

kclog

/stand/

Debugging

www.hp.com/go/wdb - has WDB for Itanium and PA/RISC (HP’s GDB)

software.hp.com - for generic software

Products: Installing,Deleting,Info

swinstall, swlist, swremove

swinstall -s /depot/wdb-5.0-pa.depot # Brings up a GUI to install from that depot

swinstall -s /depot/wdb-5.0-pa.depot WDB # Install WDB from that depot

swremove WDB # Delete a Product

swlist WDB # List that Product

when doing wsinstall, you can also request that all available patches are also installed at the same time (if on the same Depot Server) :

swinstall -s /depot -x autoselect_patches=true MyNewProd

--- interesting swlist commands —

# swlist -bundle -l file | grep bash # Search for the file ‘bash’

( a product may be not in a bundle, simply use the same command without -bundle )

# swinstall -s zrh003:/var/opt/starburst/depots/Rel_B.11.11/appl mysql

Installs ‘mysql’ from a installations server.

# swcopy -s zrh003:/aaa/bbb/ccc /labs/depots/sw Perl5

# swlist -s zrh003:/aaa/bbb/appl -l product | grep -i perl

# swremove perl

# swremove -x enforce_dependencies=false perl

# swinstall Perl5 // Will install from the default (local) Path /var/spool/sw/

IMPORTANT:

This feature requires the swagentd to run !

Patches

Patches are also installed using swinstall, there are these types of Patches :

PHxx_yyyyy where :

xx = Type

yyyyy= sequence number

xx=

CO = General Unix Commands

KL = Kernel Patches (reboot required)

NE = Network Patches

SS = all other

Patches are usually cumulative - e.g. a newer patch contains all the older fixes too.

www.itrc.hp.com

ftp://ftp.itrc.hp.com/

Patches ‘know’ which Version and OS are installed - use patch_match_target for swinstall !

Install Single Patch

# cd /tmp // This is the default path in the .text file, too

# gzip -d patches.tgz

# tar xvf patches.tar

# sh PHCO_1000

# more PHCO_1000.text

# swinstall -s ./PHCO_1000.depot -x autoreboot=true -x patch_match_target=true

Install Patch Bundle

# cd /tmp // This is the default path in the .text file, too

# gzip -d patches.tgz

# tar xvf patches.tar

# ./create_depot_hp-ux_11

# swlist -a readme -s /tmp/depot

# swinstall -s /tmp/depot -x autoreboot=true -x patch_match_target=true

View installed Patches for LVM

# swlist -l patch LVM

Remove Patch , reverts to previous files

# swremove -x autoboot=true PHCO_1000

Commit Patches - Delete the previous Files from /var/adm/sw/

# swmodify -x patch_commit=true ‘PHCO_1000.*’

SD-UX: Creating/Deleting a depot

Create multiple depots, if you plan to host multiple OS Versions

mkdir /depot # For production, use a separate (big) filesystem !

swcopy -s /cdrom AProduct @ /depot // Copy a single Product

swcopy -s /cdrom ‘*’ @ /depot // Copy ALL Products

swcopy -s zrh003:/Rel_B.11.00/labs H6704S_B01 @ /depot // Copy from other Server

To copy patches to a Depot Server, you must :

swcopy -s /tmp/PHCO_xxxx.depot -x enforce_dependencies=false \* @ /depot

Remove Software from a Depot

swremove -d MySoftware @ /depot // remove MySoftware

Remove the whole depot

swremove -d ‘*’ @ /depot // remove ALL Software and the Depot itself

rm -rf /depot // clean up

SD-UX: Using the PUSH Feature

On Server :

touch /var/adm/sw/.sdkey

On Client(s) :

/usr/lbin/sw/setaccess // Allow Access for

swacl -l root // Show ACL

Now you can use to install/remove Software from Clients :

swinstall -s /depot MyProd @ client1 client2

swlist @ client1 client2

swremove MyProd @ client1 client2

You cannot swinstall a *.depot file directly, but must use a depot server.

HP-UX Install

update-ux is the command used to install or update the OS.

# swlist -l product HPUX11i-OE* // See what yoy currently have

# swlist -l bundle -s /cdrom HPUX11i-OE* // See what OE’s are available

Update to the MissionCritical OE

# update-ux -s /cdrom HPUX11i-OE-MC // Update to the MissionCritical OE

Downgrade from MissionCritical to lower

# update-ux -s /cdrom -y HPUX11i-OE // Install the lower OE

# swremove HPUX11i-OE-MC // Remove the MC Bundle

HP/UX Tools and Downloads

www.hp.com/workstations/segments/ mcad/dassault/plmcc/perf_tools.html

there yuo can find ’tusc’ (truss for HP/UX) , ‘prospect’ and many other tools

HP-UX Security/ IP-Filter

Install Bastille from you OS CD to harden the OS

then run

# /opt/sec_mgmt/bastille/bin/bastille

to configure the options you need.

You can also download and install IPFilter from software.hp.com

# swinstall -x autoreboot=true -s /B9901AA_A.03.05.10.04_HP-UX_B.11.11_32+64.depot B9901AA

Install Process Resource Manager

swinstall -x autoreboot=true -s zrh003:/var/opt/starburst/depots/Rel_B.11.11/appl PRM-Sw-Krn PRM-Sw-Lib Proc-Resrc-Mgr

prm will allow you to assign resources to processes, sounds like an interesting

HP-UX Links