Update.bat

Aus Planet 3DNow! Distributed Computing Wiki
Zur Navigation springen Zur Suche springen

Bei manchen Projekten kommt man nicht umhin, bei der Workunit-Anforderung nachzuhelfen.

Dies erfolgt am einfachsten mit einer ausführbaren Datei, oder im Falle von Linux, mit einer Komandozeile.


Windows

Den Texteditor öffnen und folgenden Inhalt, hier beispielhaft für das Projekt TN-Gird, einfügen:

cls
:START
echo off
time /t
timeout 122
"C:\Programme\Boinc\boinccmd.exe" --project http://gene.disi.unitn.it/test/ update
GOTO START 

Danach die Datei mit dem Namen "Update.bat" im Verzeichnis: C:\ProgramData\BOINC\ abspeichern.

Darauf achten, dass die Datei nicht "Update.bat.txt" heißt.

Datei mit Doppelklick starten, beenden mit Strg+C und mit j bestätigen.

Mit Rechtsklick läßt sich natürlich auch eine Verknüpfung anlegen.

Die Zahl hinter "timeout" ist in Sekunden, wie lange pausiert werden soll, bis die nächste Anfrage ans Projekt erfolgt.

Diese Zeitspanne ist von Projekt zu Projekt unterschiedlich.

Sollte der Upload hängen, kann mit dieser weiteren Zeile der Upload erneut angestoßen werden:

"C:\Programme\Boinc\boinccmd.exe" --network_available  

Wer mit Instanzen arbeitet, nimmt folgendes, und paßt es an:

@echo off
cls
:START
"%ProgramFiles%\BOINC\boinccmd.exe" --host 127.0.0.1:9001 --passwd p3d --network_available
"%ProgramFiles%\BOINC\boinccmd.exe" --host 127.0.0.1:9001 --passwd p3d --project http://gene.disi.unitn.it/test/ update

"%ProgramFiles%\BOINC\boinccmd.exe" --host 127.0.0.1:9002 --passwd p3d --network_available
"%ProgramFiles%\BOINC\boinccmd.exe" --host 127.0.0.1:9002 --passwd p3d --project http://gene.disi.unitn.it/test/ update

time /t
timeout 15
GOTO START
 

Wenn mehrere Rechner und Instanzen verwendet werden, reicht es aus, dass eine einzige update.bat für alle Rechner und Instanzen arbeitet.

Powershell-Skript

Als Datei update.ps1 abgespeichert und dann Rechtsklick auf die Datei und Mit Powershell ausführen:

$DLY=190                                                             #project delay
$PEN=30                                                              #penetration interval
$KYW='downloading'                                                     #keyword in tasklist
$PRJ='http://www.worldcommunitygrid.org/'                            #project url
$PBC='C:\Program Files\BOINC\boinccmd.exe'                            #path to boinc+command
Do{$D = (Get-Date).ToString("dd.MM.yyyy HH:mm:ss :")                     #timestamp
    .$PBC --network_available                                     
    .$PBC --project $PRJ update time /t                             
    $M = .$PBC --get_tasks | Select-String -Pattern $KYW
    if ($M.Count -gt 0) {
        Write-Host "$D Naechster Versuch in $PEN Sekunden fuer $PRJ"
        timeout $PEN     
        }
        else { Write-Host "$D Auf Arbeit warten! Verzoegerung: $DLY Sekunden in Projekt $PRJ"
        timeout $DLY
        }
    }
Until (0)
 

Linux

Konsole im Verzeichnis: /var/lib/boinc-client/ mit Strg+Alt+T öffnen und folgenden Inhalt, hier beispielhaft für das Projekt TN-Grid, einfügen:


while true; do boinccmd --project http://gene.disi.unitn.it/test/ update; sleep 122; done

Wer mit Instanzen arbeitet, braucht nur --host 127.0.0.1:xxxx einsetzen. Die xxxx stehen für den Namen der Instanz. Im folgendem Beispiel hat die Instanz die laufende Nummer 31417. Das Passwort anpassen nach Inhalt der gui_rpc_auth.cfg

while true; do boinccmd --host 127.0.0.1:31417 --passwd p3d --project http://gene.disi.unitn.it/test/ update; sleep 122; done

In nicht nachvollziehbaren Fällen, kann die Fehlermeldung 'Authorization failure: -155' erscheinen, wenn in der Datei gui_rpc_auth.cfg kein Passwort hinterlegt ist. Der Fehler läßt sich mit zwei Anführungszeichen wie folgt beheben:

while true; do boinccmd --host 127.0.0.1:31417 --passwd '' --project http://gene.disi.unitn.it/test/ update; sleep 122; done

Mit Enter ausführen, und mit Strg+C beenden.

Der Eintrag hinter "sleep" ist analog zu "timeout".