Shell超时后终止挂起脚本,但如果脚本没有挂起则取消超时

时间:2017-10-14 13:39:43

标签: linux shell unix tcsh

我正在 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

1 个答案:

答案 0 :(得分: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

请注意,使用" real"编程语言(几乎任何语言)这种东西变得容易多了,例如在Python的subproccess模块中只有timeout设置: - )