与 Tmux/Screen 相比,使用传统作业控制进行多任务处理有哪些优点?

与 Tmux/Screen 相比,使用传统作业控制进行多任务处理有哪些优点?

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

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

答案1

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

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

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

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

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

Screen 和 tmux 可能未安装。

答案2

易于使用是主要原因。使用键盘快捷键在屏幕之间切换比使用作业控制功能要方便得多。此外,使用屏幕时,每个窗口都连接到一个单独的虚拟终端,而使用作业控制时,您要么必须暂停进程,要么允许它在后台运行,从而使唯一的终端变得混乱。

最后但并非最不重要的一点是,传统的作业控制不允许您重新连接到现有会话,也不允许与其他人共享它。

相关内容