2016-07-13 17 views
6

Używam długiej pracy przy użyciu klastra komputerów. Czasami proces jest przerywany i muszę ręcznie zrestartować. Występuje znaczny czas przestoju, gdy przerwy pojawiają się z dnia na dzień. Zastanawiałem się, czy istnieje sposób uruchomienia skryptu nadzorcy w Julii, który monitoruje, czy praca działa w innym przypadku Julii. Ponownie uruchomi proces, jeśli zostanie przerwany i zakończy się po zakończeniu zadania. Niestety, nie wiem dokładnie, jak sprawdzić, czy proces jest uruchomiony i jak ponownie uruchomić proces. Oto przybliżony pomysł:Automatyczne ponowne uruchamianie długich zadań w Julia

state = true 
while state == true 
    #check every minute 
    sleep(60) 
    data = readcsv("outputfile.csv") 
    #read file to check if process is finished 
    if size(data,1) < N 
     #some function to check if the process is running 
     if isrunning() == true 
      #Do nothing.Keep running 
     else 
     #some function to spawn new instance of julia 
     #run the code 
      include("myscript.jl") 
     end 
    else 
     #Job finished, exit while loop 
     state = false 
    end 
end 

Odpowiedz

5

Właściwe narzędzie do właściwego zadania. Użyj powłoki linii poleceń. Jeśli coś zostanie przedwcześnie przerwane, wyświetli kod statusu błędu.

Np Bash

until julia myscript.jl; 
do echo "Failed/Interrupted. Restarting in 5s. Press Ctrl-C now to interrupt."; 
sleep 5; 
done` 

Bo Julia nie jest unuable jako goniec poleceń można zrobić w Julia:

while true 
    try 
     run(`julia myscript.jl`) #Run a separate process 
     break 
    catch 
     println("Failed/Interrupted. Restarting in 5s. Press Ctrl-C now to interrupt.") 
     sleep(5) 
    end 
end 
Powiązane problemy