我使用PHP脚本在Linux中调用shell脚本,我执行以下操作:
shell_exec('./shell_script.sh');
之后PHP脚本继续...所有这些都按预期工作。
但是,有时shell_script无论出于何种原因都没有完成执行,所以这里有一个问题:
如何在执行x个时间后终止shell_script.sh? 这应该以某种方式在PHP本身处理(不要认为在这种情况下可能)或者应该在.sh本身中完成吗?
所以就在:
之后#!/bin/bash
<。>在.sh的开头,如果执行时间超过20秒,我可以把它终止吗?
答案 0 :(得分:3)
我不知道你是否可以在php中做到这一点,并且在bash中可能存在更好的解决方案,但这是你可以做的:
这是你可以在#!/bin/bash
之后立即在20秒后杀死当前脚本的行:
(sleep 20 && kill $$) &
bash用当前脚本的pid替换$$。
答案 1 :(得分:1)
您可以使用以下内容:
# start timer
( sleep $TIMEOUT ; kill $$ ) 2>/dev/null &
TIMER_PID=$!
# "payload"
echo hello
# cancel timer
kill $TIMER_PID
YMMV虽然,在我的测试中,应该取消定时器的部分有时不会终止sleep
,程序会等到超时结束。