||
1.在/var/www/html/ganglia目录下新建目录 qst,并修改apache的权限(虽不太安全),
chmod u+w /etc/sudoers
修改 /etc/sudoers
将 Defaults requiretty 改为 #Defaults requiretty
Defaults env_keep =""COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY "
后面加入 SGE_ROOT SGE_QMASTER_PORT SGE_EXECD_PORT ,使得使用sudo时,传递这些变量。
在 ## Allow root to run any commands anywhere
root ALL=(ALL) ALL
后面添加
apache ALL=(ALL) NOPASSWD: ALL
(使apache可以无密码的以root执行)
然后 chmod u-w /etc/sudoers
2.修改 /var/www/html/ganglia/templates/Rocks/cluster_extra.tpl文件
增加一行 <a href="./qst/qselect.php"><b>Process </b></a> |
3.在/var/www/html/ganglia下新建qselect.php,内容如下:
<html>
<head>
</head>
<div vlign="middle" align="center">
<ul align="center">
<input type=button value='Mu Yuewen'onclick="window.location.href('qout.php?qname=mu')">
<input type=button value='Han Yan'onclick="window.location.href('qout.php?qname=han')">
<input type=button value='Ge Guixian' onclick="window.location.href('qout.php?qname=ge')">
</ul>
</htmL>
4.新建qout.php,内容如下
<?php
$qn=\$_REQUEST['qname'];
//读入外部变量
putenv("SGE_ROOT=/opt/gridengine");
putenv("SGE_QMASTER_PORT=536");
putenv("SGE_EXECD_PORT=537");
//增加SGE环境变量
shell_exec(" /usr/bin/sudo /bin/bash qout.sh \$qn >qlog.txt 2>&1");
//增加 2>&1 便于观察输出错误
?>
<html>
<head>
<meta HTTP-Equiv="Refresh" CONTENT="1; URL=qlog.txt">
</head>
</htmL>
5.新建qout.sh,如下
#!/bin/sh
if [ "\$#" == "1" ] ; then
quser="\$1"
else
quser="mu"
fi
qst="\$SGE_ROOT/bin/lx26-amd64/qstat"
joblist=$( \$qst -j \* | grep "job_number:"| awk '{print \$2 }' )
echo "************************************************************************************"
\$qst -u \$quser | grep " r\|qw "
for jobid in \$joblist
do
jobowner=\$( \$qst -j \$jobid | grep "owner: "| awk '{print \$2 }' )
if [ "\$jobowner" == "\$quser" ] ; then
jobname[\$jobid]=\$( \$qst -j \$jobid | grep "job_name: "| awk '{print \$2 }' )
jobdir[\$jobid]=\$( \$qst -j \$jobid | grep "cwd: "| awk '{print \$2 }' )
statu=\$( \$qst -u \$quser | grep "\$jobid" | awk '{print \$5 }' )
ncore=\$( \$qst | grep "\$jobid" |awk '{ print \$9}' )
if [ "\$statu" == "r" ] ; then
echo "************************************************************************************"
echo "\$jobid \${jobname[\$jobid]} \$ncore \${jobdir[\$jobid]}"
echo
/var/www/html/ganglia/qst/outvasp.sh \${jobdir[\$jobid]}
fi
fi
done
exit 0
6.新建 outvasp.php如下,
#!/bin/sh
qdir="$1"
if [ -e \$qdir/OUTCAR ] ; then
grep "NELECT" \$qdir/OUTCAR |tail -1
grep "TOTEN" \$qdir/OUTCAR |tail -1
grep "energy without entropy" \$qdir/OUTCAR |tail -1
grep "mag" \$qdir/OSZICAR |tail -1
grep "E-fermi" \$qdir/OUTCAR |tail -1
grep "number of bands NBANDS" \$qdir/OUTCAR |tail -1
grep "pressure" \$qdir/OUTCAR |tail -1
grep "the point symmetry" \$qdir/OUTCAR |tail -1
grep "aborting loop because EDIFF is reached" \$qdir/OUTCAR |tail -1
grep "g(Force)" \$qdir/OUTCAR |tail -1
grep "total drift" \$qdir/OUTCAR |tail -1
grep "Iteration" \$qdir/OUTCAR |tail -1
grep " reached required accuracy" \$qdir/OUTCAR
grep "error" \$qdir/OUTCAR
else
/usr/bin/perl /var/www/html/ganglia/qst/nebef.pl \$qdir
fi
7.修改nebef.pl,
将 \$dir = cwd; 改为 my \$dir=shift @ARGV;
其它命令: 重启apache
/usr/sbin/apachectl restart
其它位置 /etc/php.ini /etc/httpd/conf/httpd.conf
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 22:55
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社