2 #############################################
4 # system characterization script
5 # "scs" collects data from Atria
6 # customer sites for analysis by
8 ######################################
10 #########################
11 # For Solaris 5.x systems
12 #########################
15 for i in tcp udp ip hme
17 /usr/sbin/ndd /dev/$i \? | /bin/awk '{print $1}' | \
18 /bin/egrep -v '\?|directed|respond|status|hash' > /tmp/$$
19 for j in `/bin/cat /tmp/$$`
21 /bin/printf "%-30s %s\n" $j `/usr/sbin/ndd /dev/$i $j `
30 show "Uptime" /bin/uptime
31 show "System Device Configuration" /usr/sbin/prtconf -vP
32 show "System Configuration" /usr/sbin/sysdef -i
33 show "System Customization" '/bin/cat /etc/system | \
34 /bin/grep -v "^\*" | /bin/grep -v "^$"'
35 show "Network Configuration" nddit
36 show "System Messages" /bin/dmesg
37 show "Patches" /bin/showrev -p
38 # /usr/kvm/prtconf check and use
39 #show "fpversion" /opt/SUNWspro/bin/fpversion
41 show "Processes" '/usr/ucb/ps auxww | /bin/fold -80'
42 show "Network Configuration" /usr/sbin/ifconfig -a
43 show "Network Utilization Summary" /bin/netstat -i
44 show "Network Protocol Statistics" /bin/netstat -s
45 show "Network Mbuf Statistics" /bin/netstat -m
46 show "VM Statistics" /bin/vmstat -s
47 show "Cache Flush Statistics" /bin/vmstat -c
48 show "Interrupts" /bin/vmstat -i
49 show "NFS Statistics" /bin/nfsstat
50 show "NFS Responses" /bin/nfsstat -m
52 show "CPU Utilization" /bin/sar -u 1 10
53 show "Buffer Activity" /bin/sar -b 1 10
54 show "Block Device Activity" /bin/sar -d 1 10
55 show "Disk Device Activity" iostat -x 1 10
56 show "Paging In Activity" /bin/sar -p 1 5
57 show "Paging Out Activity" /bin/sar -g 1 5
58 show "Free Memory" /bin/sar -r 1 5
59 show "vmstat snapshot" /bin/vmstat 2 10
60 show "Kernel Memory Allocation Activity" /bin/sar -k 1 5
61 show "KMA statistics" 'echo kmastat | /usr/sbin/crash'
63 show "Swap space" /usr/sbin/swap -s
67 #######################
68 # For SUNOS 4.x systems
69 #######################
73 show "Memory " '/etc/dmesg | grep mem'
74 show "System Messages" /etc/dmesg
75 show "Processes" '/bin/ps auxww | /usr/ucb/fold -80'
76 show "Network Utilization Summary" /usr/ucb/netstat -i
77 show "Network Protocol Statistics" /usr/ucb/netstat -s
78 show "Network Mbuf Statistics" /usr/ucb/netstat -m
79 show "VM Statistics" /usr/ucb/vmstat -s
80 show "Cache Flush Statistics" /usr/ucb/vmstat -c
81 show "Interrupts" /usr/ucb/vmstat -i
82 show "NFS Statistics" /usr/etc/nfsstat
84 show "Disk Device Activity" /bin/iostat -D 1 10
85 show "CPU Activity" /usr/ucb/vmstat 1 10
86 show "Tables" /etc/pstat -T
87 show "vmstat snapshot" /usr/ucb/vmstat 2 10
92 #######################
94 #######################
98 show "Processes" '/usr/bin/ps -elf '
99 show "Network Utilization Summary" /bin/netstat -i
100 show "Network Protocol Statistics" /bin/netstat -s
101 show "Network Mbuf Statistics" /bin/netstat -m
102 show "Network Configurables" /usr/sbin/no -a
103 show "NFS Statistics" /usr/sbin/nfsstat
105 show "System Attributes" /usr/sbin/lsattr -E -l sys0
106 show "CPU Utilization" sar -u 1 10
107 show "Buffer Activity" sar -b 1 10
108 show "Disk Activity" /bin/iostat 1 10
109 show "Paging Stats" sar -r 1 5
110 show "Network Monitor for 30s" '/bin/netpmon -v -o /tmp/$$; sleep 30; trcstop'
114 #######################
116 #######################
119 show "Boot Messages" 'echo "";echo ""; echo "";uerf -r 300 | tail -100'
120 show "Processes" '/usr/bin/ps glww | fold -80'
121 show "Network Utilization Summary" /usr/sbin/netstat -i
122 show "Network Protocol Statistics" /usr/sbin/netstat -s
123 show "Network Mbuf Statistics" /usr/sbin/netstat -m
124 show "NFS Statistics" /usr/bin/nfsstat
125 show "Kernel memory usage" /usr/bin/vmstat -M
126 show "vmstat snapshopt" /usr/bin/vmstat 2 10
127 show "Disk Device snapshot" /bin/iostat 2 10
131 #######################
133 #######################
136 show "Uptime" /usr/bsd/uptime
137 show "System Device Configuration" /usr/sbin/sysconf
138 show "System Hardware Configuration" /usr/bin/hinv
139 show "System Software Configuration" /etc/chkconfig
140 show "Patches" '/usr/sbin/versions | grep Patch'
141 show "Disk Usage" /usr/sbin/df -l -k
142 show "System Customization" '/bin/cat /var/sysgen/stune | \
143 /bin/grep -v "^\*" | /bin/grep -v "^$"'
145 show "Processes" '/usr/bin/ps -elf | /bin/fold -80'
146 show "Network Utilization Summary" /usr/etc/netstat -i
147 show "Network Protocol Statistics" /usr/etc/netstat -s
148 show "Network Mbuf Statistics" /usr/etc/netstat -m
149 show "NFS Statistics" /usr/etc/nfsstat
151 show "CPU Utilization" sar -u 1 10
152 show "Buffer Activity" sar -b 1 10
153 show "Block Device Activity" sar -d 1 10
154 show "Paging In Activity" sar -p 1 5
155 show "Paging Out Activity" sar -g 1 5
156 show "Free Memory" sar -r 1 5
161 #######################
163 #######################
166 show "Uptime" /usr/bsd/uptime
167 show "System Device Configuration" /usr/sbin/sysconf
168 show "System Hardware Configuration" /usr/bin/hinv
169 show "System Software Configuration" /etc/chkconfig
170 show "Disk Usage" /usr/sbin/df -l -k
171 show "System Customization" '/bin/cat /var/sysgen/stune | \
172 /bin/grep -v "^\*" | /bin/grep -v "^$"'
174 show "Processes" '/usr/bin/ps -elf | /bin/fold -80'
175 show "Network Utilization Summary" /usr/etc/netstat -i
176 show "Network Protocol Statistics" /usr/etc/netstat -s
177 show "Network Mbuf Statistics" /usr/etc/netstat -m
178 show "NFS Statistics" /usr/etc/nfsstat
180 show "CPU Utilization" sar -u 1 10
181 show "Buffer Activity" sar -b 1 10
182 show "Block Device Activity" sar -d 1 10
183 show "Paging In Activity" sar -p 1 5
184 show "Paging Out Activity" sar -g 1 5
185 show "Free Memory" sar -r 1 5
190 #####################
191 # For HP-UX 9/800 systems
192 #####################
195 show "Memory " grep "mem =" /usr/adm/*syslog
196 #first the shared info
198 # now the system specific
199 show "System definition" /etc/sysdef
200 show "CPU Utilization" /usr/bin/sar -u 1 10
201 show "Buffer Activity" /usr/bin/sar -b 1 10
202 show "Block Device Activity" /usr/bin/sar -d 1 10
204 #####################
205 # For HP-UX 9/700 systems
206 #####################
209 show "Memory " grep Physical /usr/adm/messages
210 # just the shared info
213 #####################
214 # For All HP-UX 9 systems
215 #####################
218 show "Uptime" /usr/bin/uptime
219 show "System Messages" /etc/dmesg
220 show "Swap Space" /etc/swapinfo
221 show "Patches" ls -ld /system/PH*
222 show "IO devices" /etc/ioscan -f
224 show "Processes" '/bin/ps -elf | /usr/bin/fold -80'
225 show "Network Utilization Summary" /usr/bin/netstat -i
226 show "Network Protocol Statistics" /usr/bin/netstat -s
227 show "Network Mbuf Statistics" /usr/bin/netstat -m
228 show "VM Statistics" /usr/bin/vmstat -s
229 show "NFS Statistics" /usr/etc/nfsstat
230 show "Network errors" /etc/netfmt -t 30 -f /usr/adm/nettl.LOG00
232 show "Disk Utilization" /usr/bin/bdf -l
233 show "vmstat snapshot" /usr/bin/vmstat 2 10
236 #####################
237 # For HP-UX 10 systems
238 #####################
242 show "Memory " grep Physical /var/adm/syslog/syslog.log
243 show "System DMessages" /usr/sbin/dmesg
244 show "System definition" /usr/sbin/sysdef
245 show "Messages" "tail -100 /usr/adm/syslog/syslog.log"
246 show "IO status" /etc/ioscan -f
247 show "Patches" '/usr/sbin/swlist -l product | grep PH'
249 show "Processes" '/usr/bin/ps -elf | /usr/bin/fold -80'
250 show "Network Utilization Summary" /usr/bin/netstat -i
251 show "Network Protocol Statistics" /usr/bin/netstat -s
252 show "Network Mbuf Statistics" /usr/bin/netstat -m
253 show "VM Statistics" /usr/bin/vmstat -s
254 show "NFS Statistics" /usr/bin/nfsstat
256 show "CPU Utilization" /usr/bin/sar -u 1 10
257 show "Buffer Activity" /usr/bin/sar -b 1 10
258 show "Block Device Activity" /usr/bin/sar -d 1 10
259 show "vmstat snapshot" /usr/bin/vmstat 2 10
261 #####################
262 # For Unixware systems
263 #####################
266 show "Memory size" /sbin/memsize
267 show "Message log" cat /usr/adm/log/osmlog
268 show "System Configuration" /usr/sbin/sysdef
269 show "Processes" '/usr/bin/ps -elf '
270 show "Network Utilization Summary" /bin/netstat -i
271 show "Network Protocol Statistics" /bin/netstat -s
272 show "NFS Statistics" /usr/sbin/nfsstat
274 show "CPU Utilization" /sbin/sar -u 1 10
275 show "Buffer Activity" /sbin/sar -b 1 10
276 show "Block Device Activity" /sbin/sar -d 1 10
277 show "Paging In Activity" /sbin/sar -p 1 5
278 show "Paging Out Activity" /sbin/sar -g 1 5
279 show "Free Memory" /sbin/sar -r 1 5
280 show "Historical sar data" /sbin/sar -A
285 ####################################
286 # display informationin a uniform way
287 ####################################
289 echo "----------------------------------------------------"
291 echo "----------------------------------------------------"
296 ##################################################
297 # check uw network - works for Unixware
298 ##################################################
301 netstat -i $interface
303 netstat -i $interface
306 ##################################################
307 # check network - works for HP-UX and SUNOS 5.x
308 ##################################################
310 printf "%8s %8s %8s %8s %8s %8s \n" time inpkts inerrs \
311 outpkts outerrs colls
312 netstat -i -I $interface $interval | (
313 (line ; line ; line) > /dev/null
314 t_inpkts=0 # initialize counter
315 t_inerrs=0 # initialize counter
316 t_outpkts=0 # initialize counter
317 t_outerrs=0 # initialize counter
318 t_colls=0 # initialize counter
320 while test $i -lt $count ; do # for each of the lines
323 set -- `line` # get the line
324 printf "%8s %8s %8s %8s %8s\n" $1 $2 $3 $4 $5
325 t_inpkts=`expr $1 + $t_inpkts` # accumulate in packets
327 t_inerrs=`expr $1 + $t_inerrs` # accumulate in errors
329 t_outpkts=`expr $1 + $t_outpkts` # accumulate out packets
331 t_outerrs=`expr $1 + $t_outerrs` # accumulate out errors
333 t_colls=`expr $1 + $t_colls` # accumulate collisions
336 printf "\n%8s %8s %8s %8s %8s %8s \n" \
337 total $t_inpkts $t_inerrs $t_outpkts $t_outerrs $t_colls
338 # now check error and collision rate.
339 # Use awk to get floating point accuracy
340 echo $t_colls $t_outpkts $t_inerrs $t_inpkts | awk '$2 != 0 {
341 collision_rate = $1 / $2;
342 printf("\n\ncollision rate ( %g %% )", (collision_rate * 100.0));
343 if ( collision_rate > 0.05 )
344 printf(" too high. Add subnets.\n");
348 error_rate = $3 / $4;
349 printf(" error rate ( %g %% )", (error_rate * 100.0));
350 if (error_rate > 0.00025)
351 printf(" too high. Check cabling.\n");
358 ##################################################
359 # check fddi - for sun
360 ##################################################
362 /opt/*conn/*nf/utilities/nf_stat $interface 3 5
363 /opt/*conn/*nf/utilities/nf_stat -m 3 5
364 /opt/*fddi/fddistat -l
367 ##################################################
368 # check fddi - for HPs
369 ##################################################
371 /usr/bin/fddistat /dev/$interface
374 ##################################################
375 # check network - works for SUNOS 4.x
376 ##################################################
378 echo " time inpkts inerrs outpkts outerrs colls"
379 netstat -i -I $interface $interval | (
380 (line ; line ; line) > /dev/null
381 t_inpkts=0 # initialize counter
382 t_inerrs=0 # initialize counter
383 t_outpkts=0 # initialize counter
384 t_outerrs=0 # initialize counter
385 t_colls=0 # initialize counter
387 while test $i -lt $count ; do # for each of the lines
390 set -- `line` # get the line
391 echo " $1 $2 $3 $4 $5"
392 t_inpkts=`expr $1 + $t_inpkts` # accumulate in packets
394 t_inerrs=`expr $1 + $t_inerrs` # accumulate in errors
396 t_outpkts=`expr $1 + $t_outpkts` # accumulate out packets
398 t_outerrs=`expr $1 + $t_outerrs` # accumulate out errors
400 t_colls=`expr $1 + $t_colls` # accumulate collisions
404 echo -n "$t_inpkts $t_inerrs $t_outpkts "
405 echo " $t_outerrs $t_colls"
406 # now check error and collision rate.
407 # Use awk to get floating point accuracy
408 echo $t_colls $t_outpkts $t_inerrs $t_inpkts | awk '$2 != 0 {
409 collision_rate = $1 / $2;
410 printf("\n\ncollision rate ( %g %% )", (collision_rate * 100.0));
411 if ( collision_rate > 0.05 )
412 printf(" - too many collisions. \n");
416 error_rate = $3 / $4;
417 printf(" error rate ( %g %% )", (error_rate * 100.0));
418 if (error_rate > 0.00025)
419 printf(" - too many errors. \n");
426 ########################################################
427 # get disk layout and performance data
428 ########################################################
431 #need to add logic here to select a configured controller
432 #and only do an ssaadm if relevant. We'll live with the errors
434 for i in `(cd /dev/rdsk; ls | cut -d't' -f 1 | uniq)`
436 ssaadm display $i 2>/dev/null
437 ssaadm display -p $i 2>/dev/null
441 ########################################################
442 # attempt to get Sparc Storage Array configuration
443 ########################################################
446 SSAS=`/usr/sbin/prtconf -vP | grep soc | grep instance | wc -l`
447 show "SSAs" echo "$SSAS SparcStorage Arrays attached"
449 if [ $SSAS = 0 ] ; then
453 #else lets print out information
455 show "SSA Disks and Performance" do_ssaadm
456 show "State and Configuration of Array Disks" /usr/sbin/vxprint -ht
457 show "Disk utilization" /usr/sbin/vxstat -i 2 -c 5
458 show "Disk utilization" /usr/sbin/vxstat -i 2 -c 5 -s
462 ########################################################
463 # establish file partition -> disk device mapping for solaris
464 # how do I do this for other platforms?
465 ########################################################
469 show "Disk Device Mapping" echo ' '
470 df -F ufs | cut -f1 -d: | awk '{print $2}' | sed 's/(//' |\
471 sed 's/)//' > /tmp/lll
472 for i in `cat /tmp/lll`
478 show "path_to_inst file" cat /etc/path_to_inst
481 ########################################################
482 # calculate the size (in bytes) of all VOB database on this host
483 ########################################################
486 if [ ! -f $ATRIAHOME/bin/cleartool ] ; then
487 echo this is not a ClearCase host
490 # list all vobs on this host and extract the
491 # VOB storage directory.
492 $ATRIAHOME/bin/cleartool lsvob -host $HOST
493 $ATRIAHOME/bin/cleartool lsvob -host $HOST | \
494 awk '$1 == "*" {print $3 } \
495 $1 != "*" {print $2 }' >/tmp/list.$$
497 vobs=`wc -l /tmp/list.$$ | awk '{print $1}'`
498 echo "Number of vobs : $vobs"
499 if [ $vobs = 0 ] ; then
502 # now count all the bytes in the database data and key files
503 for i in `cat /tmp/list.$$`
505 if [ ! -d $i/db ] ; then
506 echo no db subdirectory for $i
510 $LSL vob_db.d0? vob_db.k0? | \
512 {sum = sum + $5/(1024.0*1024.0)} \
513 END {printf " %8.3f Mb\t", sum}'
515 done | tee -a /tmp/list1.$$
519 END {printf "%9.3f Mb\tTOTAL", sum}' < /tmp/list1.$$
521 rm /tmp/list.$$ /tmp/list1.$$
524 ########################################################
525 # check the view characteristics
526 ########################################################
529 if [ ! -f $ATRIAHOME/bin/cleartool ] ; then
530 echo this is not a ClearCase host
533 $ATRIAHOME/bin/cleartool lsview -host $HOST | \
534 awk '$1 == "*" {print $3,$2 } \
535 $1 != "*" {print $2,$1 }' >/tmp/list.$$
537 views=`wc -l /tmp/list.$$ | awk '{print $1}'`
538 echo "Number of views : $views"
539 if [ $views = 0 ] ; then
544 while [ $i -le $views ]
547 size=`grep -s cache $1/.view | awk '{print $2}'`
548 if [ a$size = a ]; then
551 echo "$size $2" | awk '{printf "%8s\t%-16s\n", $1, $2}'
558 ########################################################
559 # check the MVFS cache on this system
560 ########################################################
563 /usr/atria/etc/mvfsstat -iclrh 2>&1
566 ########################################################
567 # obtain lockmgr parameters
568 ########################################################
571 if [ -f $ATRIAHOME/etc/init.d/atria ] ; then
572 grep lockmgr $ATRIAHOME/etc/init.d/atria | egrep '\-u' | \
573 sed 's/.*}//' | sed 's/>>.*//'
574 elif [ -f $ATRIAHOME/etc/rc.atria ] ; then
575 grep lockmgr $ATRIAHOME/etc/rc.atria | egrep '\-u' | \
576 sed 's/.*}//' | sed 's/>>.*//'
578 elif [ -f $ATRIAHOME/etc/atria_start ] ; then
579 grep lockmgr $ATRIAHOME/etc/atria_start | egrep '\-u' | \
580 sed 's/.*}//' | sed 's/>>.*//'
584 ########################################################
585 # obtain lockmgr parameters
586 ########################################################
589 VSL=$VAR/adm/atria/log/vob_scrubber_log
590 if [ ! -f $VSL ] ; then
591 echo no data available
593 egrep 'Started|element|branch|version|derived|hyperlink' $VSL
598 ########################################################
599 # check clearcase things
600 ########################################################
603 ATRIAHOME=${ATRIAHOME:-/usr/atria}
604 show "VOB sizes" check_vobs
605 show "Views" check_views
606 show "MVFS" check_mvfs
607 show "Cleartool Version" $ATRIAHOME/bin/cleartool -ver
608 show "Lock Manager Configuration" get_lockmgr
609 show "VOB Characteristics" get_vob_counts
610 show "License Host" cat $VAR/adm/atria/config/license_host
611 show "Registry Host and Region" cat $VAR/adm/atria/rgy/rgy*.conf
614 ########################################################
615 # obtain mvs parameters
616 ########################################################
620 adb -k /var/adm/atria/vmunix_mvfs /dev/mem <<!
635 adb -k /dev/ksyms /dev/mem <<!
650 adb -k /hp-ux /dev/mem <<!
669 adb -k /stand/vmunix /dev/mem <<!
688 dbx -k /vmunix /dev/mem 2>/dev/null <<!
689 printf "physmem %d", physmem
690 printf "mvfs_mnmax %d", mvfs_mnmax
691 printf "mvfs_vobfreemax %d", mvfs_vobfreemax
692 printf "mvfs_cvpfreemax %d", mvfs_cvpfreemax
693 printf "mvfs_dncdirmax %d", mvfs_dncdirmax
694 printf "mvfs_dncregmax %d", mvfs_dncregmax
695 printf "mvfs_dncnoentmax %d", mvfs_dncnoentmax
696 printf "mvfs_largeinit %d", mvfs_largeinit
703 dbx -k /unix /dev/kmem 2>/dev/null <<!
704 printf "physmem %d\n", physmem
705 printf "mvfs_mnmax %d\n", mvfs_mnmax
706 printf "mvfs_vobfreemax %d\n", mvfs_vobfreemax
707 printf "mvfs_cvpfreemax %d\n", mvfs_cvpfreemax
708 printf "mvfs_dncdirmax %d\n", mvfs_dncdirmax
709 printf "mvfs_dncregmax %d\n", mvfs_dncregmax
710 printf "mvfs_dncnoentmax %d\n", mvfs_dncnoentmax
711 printf "mvfs_largeinit %d\n", mvfs_largeinit
717 ############################
718 # ENTRY POINT FOR SCRIPT
719 ############################
721 if [ $# -ne 0 ] ; then
726 if [ ! -w /etc/passwd ] ; then
727 echo "Please run $0 as root."
741 echo system is `uname -a`
742 echo "SCS script version 98/06/22 1.45 run at `date`"
748 lans=`/bin/netstat -i | grep -v none | \
749 awk '{print $1}' | grep -v lo0 | grep -v Name `
750 for interface in $lans
752 show "Network snapshop - $interface" check_network
759 SunOS ) case $OSVER in
760 # SUN SunOS 4.x (Solaris 1.x) operating system
763 lans=`/usr/ucb/netstat -i | grep -v none | \
764 awk '{print $1}' | grep -v lo0 | grep -v Name `
765 for interface in $lans
767 show "Network snapshop - $interface" check_network1
770 show "MVFS parameters" get_mvfs_sun4
772 # SUN SunOS 5.x (Solaris 2.x) operating system
774 lans=`/bin/netstat -i | grep -v none | \
775 awk '{print $1}' | grep -v lo0 | grep -v Name `
776 for interface in $lans
778 show "Network snapshop - $interface" check_network
779 show "FDDI status - $interface" check_fddi_sol
781 show "Disk Utilization " do_discs
784 show "MVFS parameters" get_mvfs_sun5
789 HP-UX) case $OSVER in
790 # HP HP-UX operating system
791 A.09.*) model=`uname -m | cut -d'/' -f 2`
793 if [ `expr $model` -gt 800 ] ; then
795 elif [ `expr $model` -gt 700 ] ; then
800 lans=`/usr/bin/netstat -i | grep -v none | \
801 awk '{print $1}' | grep -v lo0 | grep -v Name `
802 for interface in $lans
804 show "Network snapshop - $interface" check_network
807 show "MVFS parameters" get_mvfs_hp9
810 lans=`/bin/netstat -i | grep -v none | \
811 awk '{print $1}' | grep -v lo0 | grep -v Name `
812 for interface in $lans
814 show "Network snapshop - $interface" check_network
815 show "FDDI status - $interface" check_fddi_hp
818 show "MVFS parameters" get_mvfs_hp10
823 IRIX*) case $OSVER in
824 # IRIX 5.x operating system
826 lans=`/usr/etc/netstat -i | grep -v none | \
827 awk '{print $1}' | grep -v lo0 | grep -v Name `
828 for interface in $lans
830 show "Network snapshot - $interface" check_network
834 # IRIX 6.x operating system
836 lans=`/usr/etc/netstat -i | grep -v none | \
837 awk '{print $1}' | grep -v lo0 | grep -v Name `
838 for interface in $lans
840 show "Network snapshot - $interface" check_network
843 show "MVFS parameters" get_mvfs_sgi6
846 * ) echo "$prog": unknown operating system: $OS $CPUOS
853 lans=`/usr/sbin/netstat -i | grep -v none | \
854 awk '{print $1}' | grep -v lo0 | grep -v Name `
855 for interface in $lans
857 show "Network snapshot - $interface" check_network
860 show "MVFS parameters" get_mvfs_osf1
865 lans=`/bin/netstat -i | grep -v none | \
866 awk '{print $1}' | grep -v lo0 | grep -v Name `
867 for interface in $lans
869 show "Network snapshop - $interface" check_uw_network
875 * ) echo "$prog": unknown operating system: $OS $CPUOS