擅长:python、mysql、java
<p>我认为<a href="http://linux.die.net/man/1/timeout" rel="nofollow">^{<cd1>}</a>命令非常适合您。从文档页面:</p>
<blockquote>
<h2>Synopsis</h2>
<p><strong>timeout</strong> <em>[OPTION] NUMBER[SUFFIX] COMMAND [ARG]...</em><br/>
<strong>timeout</strong> <em>[OPTION]</em></p>
<hr/>
<h2>Description</h2>
<p>Start COMMAND, and kill it if still running after NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.</p>
<p><strong>-s</strong>, <strong> signal</strong>=<em>SIGNAL</em><br/>
specify the signal to be sent on timeout.<br/>
<em>SIGNAL</em> may be a name like 'HUP' or a number.<br/>
See 'kill -l' for a list of signals </p>
</blockquote>
<p>通过依赖<code>timeout</code>,您不必担心PID重用、争用条件等复杂的细节,这些关注点被很好地封装在这个标准的Unix实用程序中。另一个好处是您的脚本将在子进程提前终止时立即恢复执行,而不是不必要地休眠整整10秒。在</p>
<p>bash演示:</p>
<pre><code>timeout -s9 10 sleep 11; echo $?;
## Killed
## 137
timeout -s9 10 sleep 3; echo $?;
## 0
</code></pre>
<p>python演示:</p>
^{pr2}$