以前遇到长时间执行任务时,一般是使用nohup加后台运行,但是涉及到少量代码编写。
同事介绍了一个screen命令,根据文档,此命令已经过时,最新的命令是tmux。
tmux的介绍文档,RedHat的这一篇非常不错。
在文章的开始,介绍了终端复用器的2个主要用途:
- 它允许您从单个终端创建多个“伪终端”。 这对于使用单个连接运行多个程序非常有用,例如当您使用 Secure Shell (SSH) 远程连接到计算机时。
- Tmux 还将您的程序与主终端分离,防止它们意外断开连接。 您可以将 tmux 与当前终端分离,您的所有程序将继续在后台安全运行。 稍后,您可以将 tmux 重新连接到相同或不同的终端。
第一种用途在做演示时非常有用,如下图:
之后演示中用的这个例子非常好:
$ while true; do echo "Hello $c"; let c=c+1; sleep 1; done
常用的快捷键:
- Ctrl+B D — 与当前会话分离。
- Ctrl+B % — 将窗口分成左右两个窗格。%很形象。
- Ctrl+B " — 将窗口分成上下两个窗格。
- Ctrl+B 箭头键(左、右、上、下)— 在窗格之间移动。
- Ctrl+B X — 关闭窗格。直接exit命令也可以。
以下是一个实际的运行过程:
[oracle@instance-20230918-1052-db19c-iaas test]$ tmux
[detached (from session 0)]
[oracle@instance-20230918-1052-db19c-iaas test]$ tmux ls
0: 1 windows (created Sat Oct 7 10:13:39 2023) [135x39]
[oracle@instance-20230918-1052-db19c-iaas test]$ tmux attach
[detached (from session 0)]
[oracle@instance-20230918-1052-db19c-iaas test]$ tmux attach
[detached (from session 0)]
[oracle@instance-20230918-1052-db19c-iaas test]$
有了tmux,并不表示nohup+后台运行就被替代了。只不过各有各的使用场景。例如10几分钟的压缩,几小时的加密都可以用tmux,但一些长时间运行的需要保留输出日志的程序仍可以用tmux。