使用传统作业控制与 Tmux/Screen 进行多任务处理的优点是什么?

dan*_*dan 6 gnu-screen tmux job-control

tmux 和 screen 允许您在不同的虚拟窗口中运行不同的进程(例如 vim、bash 脚本、mysql、psql 等)。但是传统的 Unix 作业控制(使用 CTRL-z、fg、bg 和作业)似乎为您提供了一些相同的功能。

与通过 tmux 和 screen 的较新方法相比,使用传统作业控制进行多任务处理是否有任何优势?

Gil*_*il' 5

假设您刚刚在屏幕外启动了一个程序。突然您意识到您想在该终端中做其他事情。Ctrl+Z。

Screen 和 tmux 在应用程序和终端之间引入了一层隔离。这并不总是一件好事。例如,我发现它们的回滚比 xterm 的回滚要方便得多,所以我很少使用 screen,除非我打算(能够)远程连接到该会话。

如果您已在 shell(可能位于屏幕窗口中)中设置了环境变量、当前目录和其他参数,则将这些设置转移到新的屏幕窗口可能会需要大量工作。能够在该终端中运行多个程序很方便。

有时您想在后台运行一个程序并且与它不再有任何关系:nohup program & disown %-。

如果您的 GUI 应用程序偶尔会出现问题,那么从终端启动它会很方便,或者fg; Ctrl+C如果kill %1需要的话。

Screen 和 tmux 可能未安装。

  • 顺便说一句,Zsh 有一个很棒的功能可以让这个 nohop/disown 组合变得更短:“program &!” (4认同)