如何从命令行运行程序并且在运行时仍然能够在命令行上工作?

如何从命令行运行程序并且在运行时仍然能够在命令行上工作?

假设我想运行一个 Java 程序,那么我会输入

java myProgram

然后假设它在屏幕上打印了一些输出,但需要几个小时才能完成运行。如果我想在运行时继续在同一个终端上工作,我应该使用什么命令?我最后尝试了 &,但似乎不起作用。

答案1

只需在命令后面添加一个&。这将使命令在后台运行。

请注意,您仍然会获得它的输出,因此您可能希望将输出重定向到/dev/null或重定向到某个配置文件。

例如,为了重定向 stdout 和 stderr:

java myProgram > /dev/null 2>&1 &

答案2

由于程序运行时间很长,您可能需要考虑使用屏幕。您可以运行该程序,然后使用 Control-a Control-c 启动另一个命令提示符。您可以根据需要多次执行此操作,并同时处理多项任务。此外,即使您注销然后稍后重新登录(只是不要关闭),您也可以重新连接到屏幕并查看其运行情况。执行“man screen”获取信息。

还有 tmux,它是一个类似的工具,但您需要安装它。

答案3

我认为屏幕最能回答您的具体问题,但听起来您的工作流程从使用标签中受益最多。

要在终端中打开新选项卡,请选择终端并按Ctrl+T,您可以通过按Ctrl+PgUp或者Ctrl+PgDown在它们之间切换。

这很快就变得直观,并且最终变得高效,因为您可以在选项卡之间快速切换以检查长时间运行的程序,或者在忙于处理长时间任务的选项卡时快速生成更多选项卡。

相关内容