Im folgenden wird davon ausgegangen, daß sich der ECSpooler unter /data/ecs/ befindet: =============================================================================== System-Administrator (only once): =============================================================================== cd /data/ecs/ECSpooler/startup ksh # uninstall obsolete services while true; do grep 'instance name' *.manifest | cut -f2 -d\' | \ while read INST ; do if [ "$INST" = "default" ]; then svcadm disable ec/spooler svccfg delete ec/spooler else svcadm disable "backend:${INST}" svccfg delete "backend:${INST}" fi done svcs -a | /usr/xpg4/bin/grep -q '/ec/' if [ $? -ne 0 ]; then break else sleep 2 fi done + rm -rf /var/svc/log/application-ec-* # re-import for f in *.manifest ; do svccfg import $f done + mkdir -p /etc/svc/method + cp ec_backends.method /etc/svc/method/ec-backend + chmod 755 /etc/svc/method/ec-backend # change backend user BE_USER='whatever' svcs -a | /usr/xpg4/bin/grep '/ec/backend:' | cut -f2- -d/ | \ while read FMRI ; do echo "/$FMRI" svccfg -s "$FMRI" setprop options/user="$BE_USER" svcadm refresh "/$FMRI" done # get all required projects: find backends -name "*.sh" -exec grep 'newtask -p' {} + | \ awk '{ print $4 }' | sort | uniq # ProjectName maxVal ... proj="\ CommonLisp 64MB 20 100KB 4MB 10 20 \ Erlang 64MB 20 100KB 4MB 10 20 \ Haskell 64MB 20 100KB 4MB 10 20 \ Java 64MB 20 100KB 4MB 10 20 \ Prolog 64MB 20 100KB 4MB 10 20 \ Python 64MB 20 100KB 4MB 10 20 \ Scheme 64MB 20 100KB 4MB 10 20 \ " # remove old and add new projects set -- $proj while [ $# -ge 6 ]; do + projdel "$1" 2>&1 | grep -v 'does not exist' + projadd -U ecsbd,noaccess -c "$1 EC Backend" \ -K "process.max-data-size=(priv,$2,deny)" \ -K "process.max-file-descriptor=(priv,$3,deny)" \ -K "process.max-file-size=(priv,$4,deny)" \ -K "process.max-stack-size=(priv,$5,deny)" \ -K "task.max-cpu-time=(priv,$6,signal=KILL)" \ -K "task.max-lwps=(priv,$7,deny)" \ "$1" shift 7 done + touch /etc/ecsbd + chown ecsadm:ecsbd /etc/ecsbd + chmod 0640 /etc/ecsbd + chmod 0640 /data/ecs/ECSpooler/etc/passwd exit # to enable sys logging of resource control actions (e.g. task termination) to # /var/adm/messages, execute the command below in the global !!! zone. Logging # occurs in the global zone, only! + rctladm -e syslog task.max-cpu-time # make sure, that the following entries are # in /etc/security/prof_attr: EC Backend:::EduComponents Backend: # in /etc/security/exec_attr - run newtask as noaccess:noaccess : EC Backend:suser:cmd:::/usr/bin/newtask:uid=60002;gid=60002 # in /etc/user_attr: ecsbd::::profiles=EC Backend =============================================================================== Service-Operator: =============================================================================== per default sind ALLE Services nach dem import disabled! svcadm {enable|disable|refresh} spooler svcadm {enable|disable|refresh} :haskell etc. fuer backends Um rauszubekommen, welche EC services installiert sind: svcs -a | grep '/ec/' Um die aktuelle Konfiguration eines service anzusehen: svccfg export {spooler|backend} Damit spooler an allen NICs hoert: svccfg -s spooler:default setprop options/host=0.0.0.0 svcadm refresh spooler; svcadm restart spooler Troubleshooting bzgl. 'service läuft nicht': -------------------------------------------- Um zu sehen, was alles nicht läuft: svcs -xv tail -100 /var/svc/application-ec-spooler:default.log bzw. tail -100 /var/svc/application-ec-backend:haskell.log etc. Weitere Informationen bzgl. setup und SMF: ------------------------------------------ /data/ecs/ECSpooler/startup/setup.readme /data/ecs/ECSpooler/startup/smf.readme Wichtige default File-Locations: -------------------------------- Data: /data/ecs/{spooler|backend}/data Log: /data/ecs/{spooler|backend}/log Tmp: /tmp/{spooler|backend}/ Java: /opt/java Misc: /local/usr (cvs, hugs98, erlang, gmp, ncurses, readline, swi-prolog, mzscheme) related edu[-test].cs.uni-magdeburg.de files: --------------------------------------------- Apache Config: /etc/apache/ Apache Documentroot: /data/sites/edu[-test].cs.uni-magdeburg.de/htdocs/ Testen der aktuellen ECSpooler auf IWS/Sunpool-Solaris-Kisten: -------------------------------------------------------------- + ecsadm cd /data/ecs/ECSpooler source startup/env_iws.tcsh tests/runalltests rm -rf /tmp/backends Update code: ------------ setenv CVS_RSH ssh setenv CVSROOT :ext:$user@$cvshost:/var/cvs cd /data/ecs/ECSpooler cvs update bzw. cd /data/ecs cvs co ECSpooler =============================================================================== Bemerkungen: =============================================================================== Nutzer mit der entsprechenden Berechtigung aka authorization 'solaris.smf.manage.ecs' koennen die entsprechenden Komandos ohne root Rechte ausfuehren (siehe auths(1)). Muessen irgendwelche Dateien geaendert werden, wofuer man 'escadm', 'ecsd', oder 'ecsbd' User-Rechte benoetigt, kann man sich selbige mit '+ ecsadm' bzw. '+ ecsd' bzw. '+ ecsbd' holen. HUGS: Die Environment-Variable 'HUGSDIR' muß auf /local/usr/lib/hugs gesetzt werden, damit hugs seine libs findet (da nicht im Standard-Pfad installiert). PERL: Perl-Erweiterungen sind unter /local/usr/perl5/5.8.4/bin bzw. /local/usr/perl5/site_perl/5.8.4 installiert. Ergo sollte die Environment-Variable PATH /local/usr/perl5/5.8.4/bin:/usr/perl5/bin und die Environment-Variable PERL5LIB /local/usr/perl5/site_perl/5.8.4 enthalten.