如何在Julia中自动重新启动长作业

如何在Julia中自动重新启动长作业,julia,Julia,我正在使用一组计算机执行一项长任务。有时,进程被中断,我必须手动重新启动。当晚发生中断时,停机时间相当长。我想知道是否有一种方法可以在Julia中运行一个监控脚本来监控作业是否在Julia的另一个实例中运行。如果进程被中断,它将重新启动进程,并在作业完成后终止。不幸的是,我不知道如何确切地检查进程是否正在运行以及如何重新启动进程。以下是我的大致想法: state = true while state == true #check every minute sleep(60)

我正在使用一组计算机执行一项长任务。有时,进程被中断,我必须手动重新启动。当晚发生中断时,停机时间相当长。我想知道是否有一种方法可以在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 
state=true
而state==true
#每分钟检查一次
睡眠(60)
data=readcsv(“outputfile.csv”)
#读取文件以检查进程是否已完成
如果尺寸(数据,1)
适合于正确作业的正确工具。 使用命令行shell。 如果它不及时终止了某个内容,它将给出一个错误状态代码

例如Bash

until julia myscript.jl; 
do echo "Failed/Interrupted. Restarting in 5s. Press Ctrl-C now to interrupt.";
sleep 5;
done`
因为Julia不能作为命令行执行者使用,所以在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