2016-07-13 3 views
6

컴퓨터 클러스터를 사용하여 긴 작업을 실행하고 있습니다. 경우에 따라 프로세스가 중단되고 수동으로 다시 시작해야합니다. 하룻밤 사이에 중단이 발생하면 상당한 가동 중지 시간이 있습니다. Julia의 감독자 스크립트를 실행하여 Julia의 다른 인스턴스에서 실행중인 작업을 모니터링하는 방법이 있는지 궁금합니다. 인터럽트가 발생하면 프로세스를 다시 시작하고 작업이 완료되면 종료됩니다. 불행하게도 프로세스가 실행 중인지와 프로세스를 다시 시작하는 방법을 정확하게 확인하는 방법을 알지 못합니다. 내가 가진 대략적인 아이디어는 다음과 같습니다.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 

답변

5

오른쪽 작업에 적합한 도구입니다. 명령 줄 셸을 사용하십시오. 불시에 종료 된 것이 있으면 오류 상태 코드가 표시됩니다.

배쉬

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

줄리아는 당신이 할 수있는 명령 줄 주자 unuable하지 않기 때문에, 줄리아 에서 :

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 
관련 문제