擅长:python、mysql、java
<p>如果这是一个一次性任务(也就是说,您不是在创建软件产品),我会快速地使用shell脚本和终端多路复用器(如<a href="https://www.gnu.org/software/screen/" rel="nofollow noreferrer">screen</a>)的组合。对于重新启动死机的进程(也就是说,它们发出的退出代码不是<code>0</code>),只需<a href="https://stackoverflow.com/a/697064/1181063">use the shell</a>。在</p>
<p>启动流程,例如:</p>
<pre><code>for i in n/*; do
screen -d -m -L -S $i -t $i until python sc.py $i; do echo "Crashed with exit code $?. Respawning.." >&2 ; sleep 1 ; done
done
</code></pre>
<p>这会的</p>
<ul>
<li>为运行脚本的子目录<code>n/</code>中的每个文件创建一个新的屏幕会话</li>
<li>重新启动python脚本,除非它成功退出(使用Bash的<a href="https://stackoverflow.com/a/697064/1181063">^{<cd3>}</a>)</li>
<li>将标题(<code>-t</code>)和会话名(<code>-S</code>)设置为输入文件名</li>
<li>并打开所有输出的日志记录,以便以后在出现错误时进行检查(<code>-L</code>)。在</li>
</ul>
<p>然后可以使用普通屏幕命令,如<code>screen -list</code>列出所有正在运行的任务,<code>screen -r <session name></code>来查看正在运行的会话输出。在</p>