<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=Webarc%3APBS_Jobs_Scripts_for_Searching</id>
	<title>Webarc:PBS Jobs Scripts for Searching - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/adapt/index.php?action=history&amp;feed=atom&amp;title=Webarc%3APBS_Jobs_Scripts_for_Searching"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=Webarc:PBS_Jobs_Scripts_for_Searching&amp;action=history"/>
	<updated>2026-04-05T23:15:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/adapt/index.php?title=Webarc:PBS_Jobs_Scripts_for_Searching&amp;diff=2517&amp;oldid=prev</id>
		<title>Scsong at 01:18, 10 November 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/adapt/index.php?title=Webarc:PBS_Jobs_Scripts_for_Searching&amp;diff=2517&amp;oldid=prev"/>
		<updated>2009-11-10T01:18:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;submit.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -N waqry_exp&lt;br /&gt;
#PBS -l walltime=48:00:00&lt;br /&gt;
#PBS -l nodes=8&lt;br /&gt;
#PBS -m be&lt;br /&gt;
#PBS -M scsong@gmail.com&lt;br /&gt;
#PBS -S /bin/bash&lt;br /&gt;
&lt;br /&gt;
HOST=`hostname -s`&lt;br /&gt;
PROGFILE=/vnodehomes/toaster/prog/master.$HOST&lt;br /&gt;
echo &amp;quot;&amp;quot; &amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Define function stageout&lt;br /&gt;
#&lt;br /&gt;
function stageout {&lt;br /&gt;
   echo &amp;quot;MASTER($HOST): SIGTERM caught. Stage out. Copying any existing outputs&amp;quot;&lt;br /&gt;
	scp -i ~/webarc/id_rsa /scratch1/*.out scsong@naraapp03:/fs/webarc3/data/wikipedia/results/&lt;br /&gt;
	scp -i ~/webarc/id_rsa /scratch1/*.prog scsong@naraapp03:/fs/webarc3/data/wikipedia/results/&lt;br /&gt;
   for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
	   echo &amp;quot;MASTER($HOST): Staging out $node&amp;quot;&lt;br /&gt;
      ssh $node &amp;quot;\rm -rf /scratch1/*&amp;quot; &amp;amp;&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Trap SIGTERM, SIGKILL, SIGINT to invoke function stageout&lt;br /&gt;
#&lt;br /&gt;
#trap &amp;#039;stageout&amp;#039; 2 9 15&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Stage in variable files&lt;br /&gt;
#&lt;br /&gt;
cat ${PBS_NODEFILE} &amp;gt; pbs_nodefile&lt;br /&gt;
cat ${PBS_NODEFILE} &amp;gt; ~/webarc/tsearch/bin/rpcsvr.list&lt;br /&gt;
totalnodes=`cat ${PBS_NODEFILE} | wc -l`&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Run rpcsvr.sh all nodes&lt;br /&gt;
#&lt;br /&gt;
count=1&lt;br /&gt;
for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	echo &amp;quot;$DATE: runqsvr.sh $count $totalnodes at $node&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
#	if [ $count -ne 1 ]; then&lt;br /&gt;
   	ssh $node ~/runqsvr.sh $count $totalnodes &amp;amp;&lt;br /&gt;
#	else&lt;br /&gt;
#		~/runqsvr.sh $count $totalnodes &amp;amp;&lt;br /&gt;
#   fi&lt;br /&gt;
   let count=count+1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Monitor deploy status&lt;br /&gt;
#&lt;br /&gt;
PNAME=&amp;quot;tsearchsvr&amp;quot;&lt;br /&gt;
for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	echo &amp;quot;$DATE: checking tsearchsvr at $node&amp;quot; &amp;gt;&amp;gt; $PROGFILE &lt;br /&gt;
	while ! ssh $node /sbin/pidof -x $PNAME &amp;gt; /dev/null; do&lt;br /&gt;
		DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	   echo &amp;quot;$DATE: tsearchsvr NOT found at $node.. sleep 30 seconds&amp;quot; &amp;gt;&amp;gt; $PROGFILE &lt;br /&gt;
		sleep 30&lt;br /&gt;
	done&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	echo &amp;quot;$DATE: tsearchsvr FOUND at $node.. check next server&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
done #now every node must have tsearchsvr running &lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Run runqcli.sh on all nodes&lt;br /&gt;
#&lt;br /&gt;
qts=( 1 2 4 8 16 32 64 83 )&lt;br /&gt;
tw=( 1 2 4 8 16 32 64 83 )&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$DATE: all nodes running tsearchsvr. Launch runqcli.sh&amp;quot; &amp;gt;&amp;gt; $PROGFILE &lt;br /&gt;
count=0&lt;br /&gt;
for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
	#for tw in &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;4&amp;quot; &amp;quot;8&amp;quot; &amp;quot;16&amp;quot; &amp;quot;32&amp;quot; &amp;quot;64&amp;quot; &amp;quot;83&amp;quot;; do&lt;br /&gt;
		DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
		echo &amp;quot;$DATE: Launch runqcli.sh ${qts[$count]} $tw at $node&amp;quot; &amp;gt;&amp;gt; $PROGFILE &lt;br /&gt;
		if [ $count -eq 0 ]; then&lt;br /&gt;
			#~/runqcli.sh ${qts[$count]} $tw &amp;amp;&lt;br /&gt;
			~/runqcli.sh 64 ${tw[$count]} &amp;amp;&lt;br /&gt;
		else&lt;br /&gt;
			#ssh $node &amp;quot;~/runqcli.sh ${qts[$count]} $tw&amp;quot; &amp;amp;&lt;br /&gt;
			ssh $node &amp;quot;~/runqcli.sh 64 ${tw[$count]}&amp;quot; &amp;amp;&lt;br /&gt;
		fi&lt;br /&gt;
		#sleep 2&lt;br /&gt;
	#done&lt;br /&gt;
	let count=count+1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Monitor runqcli.sh&lt;br /&gt;
#&lt;br /&gt;
PNAME=&amp;quot;runqcli.sh&amp;quot;&lt;br /&gt;
for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
   while ssh $node /sbin/pidof -x $PNAME &amp;gt; /dev/null; do&lt;br /&gt;
		DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	   echo &amp;quot;$HOST($DATE): runqcli.sh still running at $node. Sleep 10 mins&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
      sleep 600 #sleep 10 minutes&lt;br /&gt;
	done&lt;br /&gt;
   DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
   echo &amp;quot;$HOST($DATE): no existing runindex.sh&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
done #now every runqcli.sh must have finished&lt;br /&gt;
&lt;br /&gt;
 Stage out&lt;br /&gt;
count=0&lt;br /&gt;
for node in `cat ${PBS_NODEFILE}`; do&lt;br /&gt;
   echo &amp;quot;MASTER($HOST): killing tsearchsvr at $node&amp;quot; &amp;gt;&amp;gt; $PROGFILE &lt;br /&gt;
	ssh $node &amp;quot;pkill -9 tsearchsvr; \rm -rf /scratch1/*&amp;quot; &amp;amp;&lt;br /&gt;
	let count=count+1&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
runqsvr.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
HOST=`hostname -s`&lt;br /&gt;
TWFILE=/scratch1/timewindow.conf&lt;br /&gt;
&lt;br /&gt;
## STAGE OUT ALL DATA ##&lt;br /&gt;
function stageout {&lt;br /&gt;
	HOST=`hostname -s`&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
   echo &amp;quot;$HOST($DATE): SIGTERM Trapped. Staging out&amp;quot;&lt;br /&gt;
	pkill -9 tsearchsvr&lt;br /&gt;
   \rm -rf /scratch1/*&lt;br /&gt;
}&lt;br /&gt;
#trap &amp;#039;stageout&amp;#039; 2 9 15&lt;br /&gt;
&lt;br /&gt;
if [ -f $TWFILE ]; then &lt;br /&gt;
	rm -f $TWFILE&lt;br /&gt;
fi&lt;br /&gt;
if [ -f /scratch1/index_copy_complete ]; then &lt;br /&gt;
	rm -f /scratch1/index_copy_complete&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
for (( i=$1; i&amp;lt;=83; i=i+$2 ))&lt;br /&gt;
do&lt;br /&gt;
   d=`printf &amp;quot;%03d&amp;quot; $i`&lt;br /&gt;
	PROGFILE=/vnodehomes/toaster/prog/svr-$d.$HOST&lt;br /&gt;
	if [ -f $PROGFILE ]; then&lt;br /&gt;
		rm -f $PROGFILE&lt;br /&gt;
	fi&lt;br /&gt;
&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	echo &amp;quot;$HOST($DATE): runqsvr.sh running&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
   ## STAGE IN INDEXES ##&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
   echo &amp;quot;$HOST($DATE): Staging in Indexes for month-$d&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
	if [ ! -d /scratch1/month-$d ]; then&lt;br /&gt;
#	if [ ! -f /scratch1/index_ready_$d ]; then&lt;br /&gt;
      #cp -r /fs/webarc3/data/wikipedia/lemur_index/monthly/month-$d /scratch1/&lt;br /&gt;
   	ln -s /fs/webarc3/data/wikipedia/lemur_index/monthly/month-$d /scratch1/&lt;br /&gt;
	fi&lt;br /&gt;
	echo &amp;quot;$HOST($DATE): Index ready&amp;quot; &amp;gt; /scratch1/index_ready_$d&lt;br /&gt;
&lt;br /&gt;
   ## ADD ENTRY TO timewindow.conf FILE ##&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
   echo &amp;quot;$HOST($DATE): Adding an entry in timewindow.conf for month-$d&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
   echo &amp;quot;$i /scratch1/month-$d TEMP_OKAPI&amp;quot; &amp;gt;&amp;gt; $TWFILE&lt;br /&gt;
done&lt;br /&gt;
	echo &amp;quot;$HOST($DATE): All indexes ready&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
## STAGE IN BINARY **&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Staging in tsearchsvr&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
ln -s ~/webarc/tsearch/bin/tsearchsvr /scratch1/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## NOTIFY SERVER PRESENCE TO CLIENT (TODO: needs locking mechanism, perhaps) ##&lt;br /&gt;
#echo &amp;quot;$HOSTNAME&amp;quot; &amp;gt;&amp;gt; ~/webarc/tsearch/bin/rpcsvr.list&lt;br /&gt;
&lt;br /&gt;
## RUN QUERY SERVER ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Starting Query Server&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
cd /scratch1&lt;br /&gt;
/scratch1/tsearchsvr  $TWFILE  &amp;gt;&amp;gt; $PROGFILE  2&amp;gt;&amp;amp;1&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Query Server ENDED????&amp;quot;  &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#while [ 1 ]; do&lt;br /&gt;
#   sleep 60&lt;br /&gt;
#done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
runqcli.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
## STAGE OUT ALL DATA ##&lt;br /&gt;
function stageout {&lt;br /&gt;
	HOST=`hostname -s`&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
   echo &amp;quot;$HOST($DATE): SIGTERM Trapped. Staging out&amp;quot;&lt;br /&gt;
   \rm -rf /scratch1/*&lt;br /&gt;
}&lt;br /&gt;
#trap &amp;#039;stageout&amp;#039; 2 9 15&lt;br /&gt;
&lt;br /&gt;
HOST=`hostname -s`&lt;br /&gt;
PROGFILE=/vnodehomes/toaster/prog/cli-qts$1-tw$2.$HOST&lt;br /&gt;
if [ -f $PROGFILE ]; then&lt;br /&gt;
	rm -f $PROGFILE&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): runqcli.sh running&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
## STAGE IN CLIENT BINARY ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Staging in tsearchcli&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
if [ ! -f /scratch1/tsearchcli ]; then&lt;br /&gt;
	ln -s ~/webarc/tsearch/bin/tsearchcli /scratch1/&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
## STAGE IN QUERY FILE ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Staging in query file&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
cp ~/webarc/tsearch/bin/aolquery.txt /scratch1/&lt;br /&gt;
&lt;br /&gt;
## STAGE IN RPC SERVER LIST FILE ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Staging in rpc server list&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
cp ~/webarc/tsearch/bin/rpcsvr.list /scratch1/&lt;br /&gt;
&lt;br /&gt;
## GENERATE QUERY TIME SPANS ##&lt;br /&gt;
cd /scratch1&lt;br /&gt;
if [ ! -f qts.$1 ]; then&lt;br /&gt;
	echo &amp;quot;$HOST($DATE): Generate time spans $1&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
	~/webarc/tsearch/bin/gentimespan.sh $1 &amp;gt; qts.$1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
## GENERATE TIME  WINDOWS ##&lt;br /&gt;
if [ ! -f tw.$2 ]; then&lt;br /&gt;
	DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
	echo &amp;quot;$HOST($DATE): Generate time windows $2&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
	~/webarc/tsearch/bin/gentimewindows.sh $2 &amp;gt; tw.$2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
## RUN QUERY CLIENT ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Starting Query Client&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
/scratch1/tsearchcli /scratch1/rpcsvr.list /scratch1/aolquery.txt qts.$1 tw.$2 &amp;gt;&amp;gt; $PROGFILE  2&amp;gt;&amp;amp;1&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Query Client Ended&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
&lt;br /&gt;
## STAGE OUT RESULTS ##&lt;br /&gt;
DATE=`date +&amp;quot;%m/%d/%y %H:%M:%S&amp;quot;`&lt;br /&gt;
echo &amp;quot;$HOST($DATE): Copying results&amp;quot; &amp;gt;&amp;gt; $PROGFILE&lt;br /&gt;
scp -i ~/webarc/id_rsa /scratch1/qts.$1_tw.$2.out scsong@naraapp03:/fs/webarc3/data/wikipedia/results/&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Scsong</name></author>
	</entry>
</feed>