Udělátko na rušení chybných jednotek

Fórum o projektu

Moderátoři: petnek, Zelvuska, nenym

Odpovědět
Zpráva
Autor
Uživatelský avatar
vkliber
Admin webu a fóra CNT
Admin webu a fóra CNT
Příspěvky: 9689
Registrován: čtv 29 bře, 2007 09:41
ID CNT statistics: 1
Bydliště: Brušperk, 48 let
Kontaktovat uživatele:

Udělátko na rušení chybných jednotek

#1 Příspěvek od vkliber » pát 06 led, 2012 12:28

Taky vám některé jednotky (většina) skončí na "Chyba při přijimání" (nebo tak nějak podobně)? Předpokládám že ano 45hh .

Chová se to tak, že např na 4-core se stáhnou 4 jednotky, z toho 1 se úspěšně začne počítat a ostatní zahlásí chybu při stahování. Toto samozřejmě neovlivním, ale následující chování je takové, že po dopočítání té jedné úspěšné jednotky nedojde k odeslání ale na něco se čeká :smt102 , jakmile však chybé jednotky ručně zruším, okamžitě dojde k odeslání jednotek a k příjmu nových.
Tak jsem si říkal že proč to rušit ručně když to může dopředu zušit nějaký skript který se dá do Naplánovaných úloh a bude se automaticky spouštět např. co 1 hodinu.

Je napsáno v JScriptu ... skriptovací jazyk (nadstavba nad JavaScriptem) ... pro windows (pro linux je to třeba přepsat do shellu nebo do perlu)

Verze pro Windows
nazval jsem to boinc_abort_wus.js v popisu je napsáno co s tím

Kód: Vybrat vše

/*!
    Autor : Vit Kliber, Czech National Team o.s.
Vytvoreno : 06.01.2012
    Nazev : boinc_abort_wus.js
    Popis : Zrusi chybne BOINC jednotky projektu FreeHAL.
            Nutno umistit do stejneho adresare kde se nachazi boinccmd a z tohoto adresare take spoustet
            Podle verze BOINC je nutne zmenit hodnoty promenych boinc_prikaz a abort_prikaz :
            zakomentovat/odkomentovat prislusne radky
*/

// prikaz pro zjisteni aktualnich jednotek v BOINC
// var boinc_prikaz = "boinccmd.exe --get_results"; // Verze BOINC <  6.12
var boinc_prikaz = "boinccmd.exe --get_tasks";   // Verze BOINC >= 6.12

// prikaz pro zruseni jednotky
// var abort_prikaz = "boinccmd.exe --result"; // Verze BOINC <  6.12
var abort_prikaz = "boinccmd.exe --task";   // Verze BOINC >= 6.12

// adresa projektu
var projekt      = "http://www.freehal.net/freehal_at_home/";

// 1 = Debug ON, 0 = Debug OFF
var debug_code   = 0;

// pro zobrazeni hlaseni pri vyvoji
function alert(text)
{
  if (debug_code != 0)
  {
    return (new ActiveXObject("WScript.Shell")).Popup(text, 0, WScript.ScriptName, 64);
  }
}

var objekt_shell = new ActiveXObject("WScript.Shell");
var objekt_exec  = objekt_shell.Exec(boinc_prikaz);
var text_vystup  = objekt_exec.StdOut.ReadAll();
var pole_vystup  = new Array();
text_vystup = text_vystup + '\n' + "X) -----------" + '\n';
pole_vystup = text_vystup.split('\n');
var nazev  = "";
var navrat = "";
var ano    = 0;

for(var i = 0; i < pole_vystup.length; i++)
{
  if (pole_vystup[i].indexOf(") -----------") != -1)
  {
    if (ano == 1 && navrat != 0) {
      alert(abort_prikaz + " " + projekt + " " + nazev + " abort");
      var abort_exec = objekt_shell.Exec(abort_prikaz + " " + projekt + " " + nazev + " abort");
    }
    nazev  = "";
    navrat = "";
    ano    = 0;
  }
  else if (pole_vystup[i].indexOf("   name: ") != -1)
  {
    nazev = pole_vystup[i].substr(9);
  }
  else if (pole_vystup[i].indexOf("   project URL: ") != -1)
  {
    if (pole_vystup[i].indexOf("   project URL: " + projekt) != -1)
    {
      ano = 1;
    }
    else
    {
      ano = 0;
    }
  }
  else if (pole_vystup[i].indexOf("   exit_status: ") != -1)
  {
    navrat = pole_vystup[i].substr(16);
  }
}

alert("Konec."); 
Postup zprovoznění pro Windows:
V source adresáři BOINC (to je ten kde se nachází boinc.exe) vytvořit soubor boinc_abort_wus.js a do něj zkopírovat obsah výše. Podle verze BOINC zakomentovat/odkomentovat příslušné řádky. Pro verzi BOINC nižší než 6.12 budou řádky takto :

Kód: Vybrat vše

// prikaz pro zjisteni aktualnich jednotek v BOINC
var boinc_prikaz = "boinccmd.exe --get_results"; // Verze BOINC <  6.12
// var boinc_prikaz = "boinccmd.exe --get_tasks";   // Verze BOINC >= 6.12

// prikaz pro zruseni jednotky
var abort_prikaz = "boinccmd.exe --result"; // Verze BOINC <  6.12
// var abort_prikaz = "boinccmd.exe --task";   // Verze BOINC >= 6.12   
pro verzi BOINC větší než 6.12 včetně budou řádky takto :

Kód: Vybrat vše

// prikaz pro zjisteni aktualnich jednotek v BOINC
// var boinc_prikaz = "boinccmd.exe --get_results"; // Verze BOINC <  6.12
var boinc_prikaz = "boinccmd.exe --get_tasks";   // Verze BOINC >= 6.12

// prikaz pro zruseni jednotky
// var abort_prikaz = "boinccmd.exe --result"; // Verze BOINC <  6.12
var abort_prikaz = "boinccmd.exe --task";   // Verze BOINC >= 6.12   
Po uložení souboru boinc_abort_wus.js na něj kliknout pravým tlačítkem myši a kliknout na "Vlastnosti". Ve vlastnostech se přepnout na kartu "Skript", zaškrtnout "Zastavit skript po:" a nastavit 10 sekund a odškrtnout "Zobrazit logo ...". Dále vytvořit zástupce ve stejném adresáři (chytnout soubor boinc_abort_wus.js pravým tlačítkem myši, posunout a pustit a stisknout "Vytvořit zde zástupce". Vytvořeného zástupce přejmenovat na boinc_abort_wus_start.js, dále na něj kliknout pravým tlačítkem a a kliknout na "Vlastnosti". Ve vlastnostech se přepnout na kartu "Zástupce", zkontrolovat jestli hodnota "Spustit v:" odpovídá adresáři ve kterém se nachází skript boinc_abort_wus.js a nastavit "Spustit:" na hodnotu "V minimalizovaném okně".
Tím je připravený skript ke spuštění. Je možno odzkoušet tak, že spustíte BOINC Manager, najdete tam chybně staženou WUs FreeHAL a pak poklepete na boinc_abort_wus_start.js. Jednotka by se měla označit jako zrušená.
Tento postup je pro WinXP, předpokládám že na Vista a 7 bude postup stejný.

Dále je nutné zařadit skript boinc_abort_wus_start.js do naplánovaných úloh ve Windows, tady se postup pro WinXP už výrazně liší od Vista a 7, proto ho nebudu podrobně popisovat. Každý ať si taky zvolí svůj časový plán. Já mám nastaveno co 20 min.


Verze pro Linux
nazval jsem to boinc_abort_wus.sh v popisu je napsáno co s tím

Kód: Vybrat vše

#!/bin/bash
#    Autor : Vit Kliber, Czech National Team o.s.
#Vytvoreno : 09.01.2012
#    Nazev : boinc_abort_wus.sh
#    Popis : Zrusi chybne BOINC jednotky projektu FreeHAL.
#            Nutno umistit do stejneho adresare kde se nachazi boinccmd a z tohoto adresare take spoustet
#            Podle verze BOINC je nutne zmenit hodnoty promenych boinc_prikaz a abort_prikaz :
#            zakomentovat/odkomentovat prislusne radky

# prikaz pro zjisteni aktualnich jednotek v BOINC
boinc_prikaz="./boinccmd --get_results"; # Verze BOINC <  6.12
# boinc_prikaz="./boinccmd --get_tasks";   # Verze BOINC >= 6.12

# prikaz pro zruseni jednotky
abort_prikaz="./boinccmd --result"; # Verze BOINC <  6.12
# abort_prikaz="./boinccmd --task";   # Verze BOINC >= 6.12

# adresa projektu
projekt="http://www.freehal.net/freehal_at_home/";

# 1 = Debug ON, 0 = Debug OFF
debug_code="0";

# pro zobrazeni hlaseni pri vyvoji
function zprava {
  if [ "$debug_code" = "1" ]; then
    echo $1;
  fi
}

text_vystup=`$boinc_prikaz; echo; echo "X) -----------"; echo; `;

nazev="";
navrat="";
ano="0";

old_IFS=$IFS;
IFS=$'\n';
for i in $text_vystup
{
  if [ "$i" != "${i//) -----------/}" ]; then
    {
      if [ "$ano" == "1" ] && [ "$navrat" != "0" ]; then
        {
          zprava $abort_prikaz" "$projekt" "$nazev" abort";
          eval $abort_prikaz" "$projekt" "$nazev" abort";
        }
      fi
      nazev="";
      navrat="";
      ano="0";
    }
  else if [ "$i" != "${i//   name: /}" ]; then
    nazev=${i:9};
  else if [ "$i" != "${i//   project URL: /}" ]; then
    {
      if [ "$i" != "${i//   project URL: $projekt/}" ]; then
        ano="1";
      else
        ano="0";
      fi
    }
  else if [ "$i" != "${i//   exit_status: /}" ]; then
    navrat=${i:16};
  fi
  fi
  fi
  fi
}
IFS=$old_IFS;

zprava "KONEC";
  
Postup zprovoznění pro Linux:
V source adresáři BOINC (to je ten kde se nachází spustitelný soubor boinc) vytvořit soubor boinc_abort_wus.sh a do něj zkopírovat obsah výše. Podle verze BOINC zakomentovat/odkomentovat příslušné řádky. Pro verzi BOINC nižší než 6.12 budou řádky takto :

Kód: Vybrat vše

# prikaz pro zjisteni aktualnich jednotek v BOINC
boinc_prikaz="./boinccmd --get_results"; # Verze BOINC <  6.12
# boinc_prikaz="./boinccmd --get_tasks";   # Verze BOINC >= 6.12

# prikaz pro zruseni jednotky
abort_prikaz="./boinccmd --result"; # Verze BOINC <  6.12
# abort_prikaz="./boinccmd --task";   # Verze BOINC >= 6.12  
pro verzi BOINC větší než 6.12 včetně budou řádky takto :

Kód: Vybrat vše

# prikaz pro zjisteni aktualnich jednotek v BOINC
# boinc_prikaz="./boinccmd --get_results"; # Verze BOINC <  6.12
boinc_prikaz="./boinccmd --get_tasks";   # Verze BOINC >= 6.12

# prikaz pro zruseni jednotky
# abort_prikaz="./boinccmd --result"; # Verze BOINC <  6.12
abort_prikaz="./boinccmd --task";   # Verze BOINC >= 6.12  
Po uložení souboru boinc_abort_wus.sh nastavit jako spustitelný chmod +x boinc_abort_wus.sh.
Tím je připravený skript ke spuštění. Je možno odzkoušet tak, že spustíte BOINC Manager, najdete tam chybně staženou WUs FreeHAL a spustíte ./boinc_abort_wus.sh. Jednotka by se měla označit jako zrušená.

Pokud má někdo jinou distribuci a bash se nenachází v /bin/bash, tak přepsat první řádek skriptu. Kde se nachází bash se zjistí příkazem whereis bash.

Pak už nezbývá než nastavit spouštění v cronu.
Statistiky CNT | Projekty CNT | Distribuované výpočty CNT | SETI CNT | Einstein CNT
.....::::: Proč se mít nejlépe, když se můžu mít čím dál tím stejně :::::.....
Moje skromná statistika tady , tady , tady nebo grafy.
˙ıɔıqɐɹʞ ʌ ǝןɐ 'ıןʇʎd ʌ ǝɔıɾɐz ǝʇɾndnʞǝu ʎpʞıu ˙˙˙

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 6714
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Udělátko na rušení chybných jednotek

#2 Příspěvek od nenym » pát 06 led, 2012 12:39

Samozřejmě s tím mám problém také, provizorně a s velkou nechutí to řeším featurou report results immediately, jakékoli udělátko uvítám jak pro Widle, pro Linux shell.
Jenom upozorňuji, že od verze 6.12 boinccmd nezná xxx_results, ale xxx_tasks; obdobně nikoli --result, ale --task.
Prý už není krize; pořád jím plesnivé sýry, piji staré víno a jezdím v autě bez střechy.
UotD 464x
Obrázek 2xObrázek 7xObrázek 10xObrázek Obrázek
Obrázek

Uživatelský avatar
vkliber
Admin webu a fóra CNT
Admin webu a fóra CNT
Příspěvky: 9689
Registrován: čtv 29 bře, 2007 09:41
ID CNT statistics: 1
Bydliště: Brušperk, 48 let
Kontaktovat uživatele:

Re: Udělátko na rušení chybných jednotek

#3 Příspěvek od vkliber » ned 08 led, 2012 23:36

Zaktualizoval jsem první příspěvek. Skript mi už úspěšně chodí. Zítra se pokusím přepsat pro Linux.
Statistiky CNT | Projekty CNT | Distribuované výpočty CNT | SETI CNT | Einstein CNT
.....::::: Proč se mít nejlépe, když se můžu mít čím dál tím stejně :::::.....
Moje skromná statistika tady , tady , tady nebo grafy.
˙ıɔıqɐɹʞ ʌ ǝןɐ 'ıןʇʎd ʌ ǝɔıɾɐz ǝʇɾndnʞǝu ʎpʞıu ˙˙˙

Uživatelský avatar
vkliber
Admin webu a fóra CNT
Admin webu a fóra CNT
Příspěvky: 9689
Registrován: čtv 29 bře, 2007 09:41
ID CNT statistics: 1
Bydliště: Brušperk, 48 let
Kontaktovat uživatele:

Re: Udělátko na rušení chybných jednotek

#4 Příspěvek od vkliber » pon 09 led, 2012 13:32

Zaktualizoval jsem první příspěvek. Doplněna verze (bash) pro Linux.
Statistiky CNT | Projekty CNT | Distribuované výpočty CNT | SETI CNT | Einstein CNT
.....::::: Proč se mít nejlépe, když se můžu mít čím dál tím stejně :::::.....
Moje skromná statistika tady , tady , tady nebo grafy.
˙ıɔıqɐɹʞ ʌ ǝןɐ 'ıןʇʎd ʌ ǝɔıɾɐz ǝʇɾndnʞǝu ʎpʞıu ˙˙˙

nenym
78.9473684211 %
78.9473684211 %
Příspěvky: 6714
Registrován: úte 13 led, 2009 15:33
rok narození: 0- 0-1956
ID CNT statistics: 10124

Re: Udělátko na rušení chybných jednotek

#5 Příspěvek od nenym » úte 10 led, 2012 12:57

:smt023 :smt038
OT: mohl bys vítku aspoň trochu nasměrovat na přepsání tohoto scirptu do Wirouzích objektů? Je mi to absolutně cizí, abych pravdu řekl, téměř vůbec tvému scriptu nerozumím. NFS script jsem po několika mnoha pokusech prokoukl a úspěšně v různých verzích aplikuji na všelijaké projekty, do Winů mi zatím chybí aspoň vodítko pro další bádání.

EDIT : více zde, vkliber.
Prý už není krize; pořád jím plesnivé sýry, piji staré víno a jezdím v autě bez střechy.
UotD 464x
Obrázek 2xObrázek 7xObrázek 10xObrázek Obrázek
Obrázek

Odpovědět

Zpět na „FreeHAL“