2017-10-14 86 views
0

我在tcsh(叹气)工作,我想实施标题中描述的情况。我在下面提出了部分正确的解决方案。它启动script_1.sh并在超时后终止它。如果script_1.sh挂起,那可以正常工作,但如果它在超时之前完成,script_2.sh在超时发生之前仍然需要等待,我想立即启动script_2.sh。壳牌杀死挂起脚本超时后,但取消超时,如果脚本不挂起

setenv timeout 2000 

/home/$USER/script_1.sh & 

sleep $timeout 
kill -9 $! 

/home/$USER/script_2.sh 

回答

0

你可以到一个临时文件写入到的信号是script1完成:

setenv timeout 2000 

/home/$USER/script_1.sh && echo > /tmp/script1_done & 

sleep $timeout 

if (! -f /tmp/script1_done) then 
    kill -9 $! 
endif 
rm /tmp/script1_done 

/home/$USER/script_2.sh 

注意,用“真实”的编程语言(几乎任何语言)这种的东西变得容易很多,例如在Python的subproccess模块中只有一个timeout设置:-)

+0

这个实现ments解决方案,它检查脚本_1是否在'$ timeout'秒后完成,但是如果script_1在超时之前完成,我想取消定时器。我已经在'timeout'的形式中找到了解决方案[Unix](这里是http://man7.org/linux/man-pages/man1/timeout.1.html)。我在脚本中封装了命令,有可能在'timeout'命令中挂起。 – kreso