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