在正在运行的 shell 中排队任务

Mar*_*ing 2 bash job-control fish

我经常启动一个长时间运行的命令,该命令绑定到 CPU、磁盘、RAM 或 Internet 连接。在运行时,我发现我想运行一个类似的命令。假设下载一些大的东西。

然后我启动一个 shellwget ...1并让它运行。我可以打开另一个 shell 并运行另一个wget ...2,但现在他们会为带宽而战。当我在正在运行的 shell 中键入第二个命令时,它将在稍后执行,因为wget它不是交互式的。

使用 Bash 或 Fish Shell 是否有合理的方法来做到这一点?

rus*_*ush 5

如果您已经wget http://first在前台运行,您可以使用CTRL+暂停它,z然后在它之后立即返回以使用另一个命令:

fg ; wget http://second
Run Code Online (Sandbox Code Playgroud)

它应该在大多数情况下工作。

如果这种方式不可接受,您应该使用 lockfile。或者甚至只是通过ps(锁定文件更好)来监视进程。