Getting yesterdays date on AIX can be a litte tricky. One way of doing this, is by using gnu-date:
# date --date=yesterday +%m%d%y
But gnu-date has been known to sometimes have issues when shifting to or from daylight savings time. Another good solution to getting yesterdays date is:
# perl -MPOSIX -le 'print strftime "%m%d%y",localtime(time-(60*60*24))'
If a device like a printer box, jet-direct card or a Xerox Document Centre does not ping anymore from the HPOS server, it will result in connection timed out errors within HPOS. If this device however does ping from another location within your netwerk, you have a network issue, and its very likely that your network switch simply needs to learn the IP address and/or MAC address of the device. You can do this by sending a packet from the device to the HPOS server. But how do you get this device to send a packet itself, because a ping is not available?
For an Axis Box, go to the Network Settings (which is available from the Admin window). Now fill in the IP address of your HPOS server as the Primary DNS server and click on Ok. Ofcourse DNS resolving will fail (if your HPOS server isn't a DNS server), but quite immediately after clicking Ok, you will notice that the Axis Box will ping again from the HPOS server. If it pings again, change the primary DNS server in your Axis Box back to its original value.
The same can be done with other devices, like the Xerox Document Centre. Go to the TCP/IP properties (usually under Properties -> Connectivity -> Protocols). Set the IP Address Resolution to STATIC (if you're using DHCP) and update the primary DNS server to the IP address of the HPOS server. Then click on Reboot on the Status window, and you'll notice that it will ping again to the HPOS server. Again, change everything back to their original values, if the Document Centre pings.

As HP Output Server doesn't support hot backups, It is recommended to do monthly maintenance, in order to create a backup and keep things healthy. Assuming HPOS is installed in /appl/hpos and its data is stored in /data/hpos:
- Notify your users of the downtime.
- Stop any applications that use HPOS.
- Clear out any "hanging" jobs.
- Clear out the /data/hpos/var/tmp directory.
- For every log file in /data/hpos/var/log, issue:
# cp /dev/null > $logfile
- Delete and recreate the JQMs:
# config_server -d $jqm
# config_server -t JQM $jqm
JQM job databases tend to grow over time. By re-creating them, you can save lots on disk usage and I/O performance. You can do this step safely, as all information is stored in the CM. If you use a server-startup-order, you should also update this again after you've recreated the JQM:# config_server -u -x"-server-start-order xxx" $jqm
- Delete and recreate the DLMs:
# config_server -d $dlm
# nfig_server -t DLM $dlm
This step may be required because sometimes a DLM produces errors, which you might see in JobTracker. These errors are solved by recreating the DLMs. Again, remember to set your server-startup-order, if you use it.
- Stop all HPOS daemons:
# stop_server -t all
- Create a backup of the system.
- If available, download any service packs and install them now:
# . /appl/hpos/etc/setup_env.sh
# perl /appl/hpos/etc/patch.pl
If this fails, just try it again, or you can restore your backup.
- Also upgrade any client systems to the same service pack. If necessary, also check the Windows client versions required.
- Start all daemons again:
# start_server -t all
- Test if everything is working.
- Reboot your server to free up memory.
- Again, test if everything is working.
- Startup all applications again, that use HPOS.
- Notify your users that the system is available.
- Document any changes (e.g. Service Packs) and problems encountered.
- Store the software you've used somewhere safe.
This monthly backup still requires some daily backup method. You can do this, by dumping the HPOS configuration to file, before running your daily backup:
#!/bin/ksh
# Save HPOS config config
. /appl/dazel/etc/setup_env.sh
rm -f /appl/hpos/dump-file
pdconfig -d -c /appl/hpos/dump-file
How do you create an external destination in HP Output Server? I wanted to deliver a print to a destination, that executes an external command on the job. Here's the configuration that works:
I named by logical destination external, which points to queue qexternal and the physical destination is called pdexternal.
The logical destination:
-template-version : $Date: 2002/03/01 02:35:32 $
-template-component : false
-managing-server : jqm_06
-disabled : false
-form-feed-default : false
-maximum-tries-default : 30000
-printer-name : external
-destination-type : file
-queue-supported : qexternal
-template-type : standard-template
-retention-period-default : 0
-descriptor : test external delivery pathway
-input-document-formats-supported: literal,
ps,
pdf,
text,
frame,
hp-pcl,
afp
-template : false
-template-classification : static-template
-printer-realization : 0
The queue:
-template-version : $Date: 2002/01/04 17:24:14 $
-queue-name : qexternal
-managing-server : jqm_06
-disabled : false
-template-type : standard-template
-descriptor : test external delivery pathway
-queue-warning-threshold : 50
-scheduler-assigned : Pd-FIFO
-template : false
-template-classification : static-template
-logical-printers-assigned : {external, 'available'}
-message : Enabled
-physical-printers-registered : pdexternal
-job-order :
The physical destination:
-template-version : $Date: 2002/03/12 19:59:09 $
-template-component : false
-managing-server : dsm_06a
-ghostscript-program : !{dazel-install-directory}!/bin/gs
-disabled : false
-form-feed-default : false
-deliver-program : /appl/hpos/external.sh
-printer-name : pdexternal
-queue-supported : qexternal
-template-device-name : generic
-file-overwrite-default : true
-template-type : standard-template
-character-set-default : iso-latin-1
-physical-device-type : external
-descriptor : test external delivery pathway
-medium-default : iso-a4-white
-font-directories : !{dazel-install-directory}!/lib/
FONTS/Soft_Horizons
-template : false
-character-sets-supported : iso-latin-1,
ascii
-template-classification : static-template
-file-base-directory : /tmp
-printer-realization : 1
-printer-connection-mode : external
-ps-init-directories : !{dazel-install-directory}!/lib/PS
-fifo-directory : /appl/hpos/fifo
-write-only-device : true
-deliver-arguments : !{fifo-directory}!/!{job-identifier}!
When you've created this delivery pathway, create the FIFO directory (in this case:
/appl/hpos/fifo) and restart the accompanying DSM in order to activate the external destination.
The FIFO directory is used by HP Output Server to create FIFO files for every physical destination and for every job submitted to it. You can use these FIFOs to pass information back to HP Output Server.
You might have noticed the physical destination has a
-deliver-program attribute. Make sure the user that runs your DSM is capable of executing this command, and the same user-ID must be able to access the FIFO directory.
The deliver-program used is shown below. It logs some information to a file and then sends an email with the contents of the file submitted to
external.
#!/bin/ksh
{
echo
echo "Process:"
echo $$
echo "Parameters:"
echo $0 $*
echo "Who am I?"
whoami
} >> /appl/hpos/external.out
file=$2
base=`basename $file`
cp $file /appl/hpos/fifo/$base.$$
mail user@domain.com < $file
fifo=$1
echo "-job-state-on-printer completed" > $1
exit 0
This script passes some information back to the FIFO:
-job-state-on-printer completedThis will inform HP Output Server that the processing of the job has completed. If you do not pass this information, HPOS will wait forever for the job to complete, even if the job is no longer active anymore.
Now, if you submit the following command:
# pdpr -dexternal /etc/motd
The file
/etc/motd will be mailed, using script
external.sh.
Problems may be encountered with printers connected via Axis Boxes to the network, producing errors with some of the prints, usually larger prints. The printer prints a page with the following text: "ERROR: timeout, OFFENDING COMMAND: timeout, STACK:".
The solution is quite easy. The port speed of the LPT port used on the Axis Box is probably set to "Standard". Set it to "High Speed" and timeouts don't occur anymore.
If your AIM daemon dumps core frequently and you have a lot of destinations in HP Output Server, it may well be that the default stack size for the AIM daemon is too small. Default, this is 64 KB. You can confirm this, by checking the errpt on AIX only: If the errpt shows an error about Too many stack elements, then you should adjust the stack size of the AIM daemon. This may be encountered when searching for destinations on location within the Envoy Delivery Agent.
To solve this: Go to $DAZEL_HOME/etc and edit HostConfig.sgml. Search for aim in this file and scroll down to server-executable-options. Add the following line:
<DAZEL-VALUE STRING-VALUE="-s 4096">
This will increase the stack size to 4 MB. You can increase it up to 8 MB if you like. Now restart the AIM daemon and your problems should be gone.
The following is a simple script to show you the busiest logical destination there is. The script is called tq and needs nq (see elsewhere on this website) to run:
#!/bin/ksh
cd /appl/dazel
nmcp list ".*,config,server_manager" | grep jqm | cut -f1 -d, | while read JQM ; do
./nq $JQM >> /tmp/tq.$$
done
sort -nk2 /tmp/tq.$$
rm /tmp/tq.$$
You'll have to modify this script to set the correct directory to
nq.
# tq
pr26381: 1 jobs
pr50342: 1 jobs
pr50555: 1 jobs
pr50895: 1 jobs
pr69215: 1 jobs
pr36418: 2 jobs
pr39993: 2 jobs
pr50692: 3 jobs
The following is a simple script to show you the number of jobs currently active within a given JQM per logical destination. The script is called nq:
#!/bin/ksh
. /appl/dazel/etc/setup_env.sh
jqm=$1
if [ -z "$jqm" ] ; then
echo Please enter the name of a jqm.
exit
fi
pdls -c j -a destination $jqm: | grep destination | sort | awk '{print $3}' > /tmp/nq.$$
cat /tmp/nq.$$ | sort -dfu | while read printer ; do
echo $printer: `grep $printer /tmp/nq.$$ | wc -l | awk '{print $1}'` jobs
done
You'll have to modify this script to set the correct directory to
setup_env.sh.
When you run this script, enter the name of a JQM as a parameter for this script:
# nq jqm_01
pr31249: 1 jobs
pr43461: 8 jobs
pr58153: 11 jobs
pr77996: 1 jobs
pr03226: 5 jobs
The LPG daemon at default is able to process 11 jobs at a time. Under heavy load, the LPG daemon might stop because of this limitation. To avoid this, you can use the -R option for the LPR Gateway, so that it will allow an unlimited number of jobs coming in.
This is how to add the -R option:
- Login as user root.
- Stop your line printer gateway:
# stop_server lpg
- Goto your HPOS installation directory. Then switch to the etc subdirectory.
- Backup your current HostConfig.sgml file (just in case!):
# cp HostConfig.sgml HostConfig.sgml.original
- Edit the HostConfig.sgml file, and add the -R option under the -server-executable-options under your DAZEL-SERVER NAME="lpg", just like this:
<DAZEL-AVPAIR NAME="server-executable-options">
<DAZEL-VALUE STRING-VALUE="-n !{server-name}!">
<DAZEL-VALUE STRING-VALUE="-l !{server-login-name}!">
<DAZEL-VALUE STRING-VALUE="-R">
</DAZEL-AVPAIR>
- Now start your line printer gateway again:
# start_server lpg
- Check your LPG server to see if the -R option is enabled:
# list_server lpg
Number of results found: 469.
Displaying results: 341 - 350.