if [ $# -gt 0 ]
then
	max=$1
else
	max=$$
fi
p=1

print_process()
{
# cwd: cd /proc/20/cwd; pwd -P
# environment: (cat /proc/1/environ; echo) | tr "\000" "\n"
echo "<HR>"
echo "<B><a name=$1>Detailed information for process $i: </B><P>"
echo "<table cols=100 border=1><tbody>"
echo "<tr><td>PID</td><td>$1</td></tr>"
echo "<tr><td>cmdline</td><td>`cat /proc/$1/cmdline`</td></tr>"
echo "<tr><td>Environment</td><td><pre>`(cat /proc/$1/environ; echo) | tr "\000" "\n"`</pre>"
echo "<tr><td>Open files</td><td><pre>`ls -l /proc/$1/fd`</td></tr></pre>"
echo "<tr><td>Mapped memory regions</td><td><pre>`cat /proc/$1/maps`</td></tr></pre>"
echo "<tr><td>Status</td><td><pre>`cat /proc/$1/status`</td></tr></pre>"
echo "</table>"
}

echo "<HTML><TITLE>Process information</TITLE>"
echo "<BODY>"
echo "<H4>Information obtained from system `hostname` at `date`</H4>"
echo "<LI><B> Running processes:</B><P>"
echo "<table border=1><tbody>"
echo "<tr><td>PID</td><td>CMDLINE</td></tr>"

PIDs=""
while [ $p -le $max ]
do
if [ -f /proc/$p/cmdline ]
then
	PIDs="$PIDs $p"
	echo -en "<tr><td><a href=#$p>$p</td><td>" 
	cat /proc/$p/cmdline
	echo "</td></tr>"
fi
let p=p+1
done
echo "</table>"
echo "<HR>"
PSPIDs=`ps -ax -h --format "%p"`
HIDDENPIDs=""
for i in $PIDs
do
	FOUND=0
	for j in $PSPIDs
	do
		if [ $i = $j ]
		then
		FOUND=1
		fi
	done
	if [ $FOUND -eq 0 ]
	then
		HIDDENPIDs="$HIDDENPIDs $i"
	fi
done
if [ "A$HIDDENPIDs" != "A" ]
then
	echo "<blink>WARNING!</blink> The following processes are not shown in <a href=#ps>ps command output:</a><BR>"
	for i in $HIDDENPIDs
	do
		echo "<a href=#$i>$i</a> " 
	done
fi

echo "<HR>"
for i in $PIDs
do
	print_process $i
done
echo "<HR><HR>"
echo "<a name=ps>Output from command 'ps -ax':<P>"
echo "<pre><blockquote>"
ps -ax
echo "</pre></blockquote>"

echo "</BODY>"
echo "</HTML>"

