返回

在Linux上优雅地运行后台程序: Screen、Tmux和Nohub指南

开发工具

背景
我们经常会在Linux终端中运行一些长时间执行的命令或程序,比如编译代码、下载文件等。如果我们希望在执行这些命令或程序时能够继续使用终端进行其他操作,就需要使用一些手段让这些命令或程序在后台运行。

nohub

nohup命令是实现后台运行最简单的方法之一。它允许您在后台运行命令,即使您注销或关闭终端窗口。要使用nohup,只需在要运行的命令前面加上nohup即可。例如,要编译代码并让它在后台运行,您可以使用以下命令:

nohup make -j8 &

该命令将在后台编译代码,您可以继续使用终端进行其他操作。当编译完成时,您可以使用tail命令查看编译结果。

tail nohup.out

screen

screen是一个功能更强大的工具,它允许您创建多个虚拟终端,并在它们之间切换。这对于运行多个程序或在不同的工作区工作非常有用。要使用screen,只需运行screen命令即可。这将在新的窗口中创建一个新的虚拟终端。您可以使用Ctrl+A+C创建新的虚拟终端,并使用Ctrl+A+N在虚拟终端之间切换。

screen还允许您将输出重定向到文件。这非常有用,因为您可以稍后查看输出,而无需一直盯着终端窗口。要重定向输出,只需使用以下命令:

screen -S session_name -L -Logfile logfile.txt

该命令将创建名为session_name的screen会话,并将输出重定向到名为logfile.txt的文件。

tmux

tmux是另一个功能强大的工具,它与screen非常相似。它允许您创建多个虚拟终端,并在它们之间切换。tmux还允许您将输出重定向到文件,并允许您在不同的窗口中分割终端。要使用tmux,只需运行tmux命令即可。这将在新的窗口中创建一个新的虚拟终端。您可以使用Ctrl+B+C创建新的虚拟终端,并使用Ctrl+B+N在虚拟终端之间切换。

tmux还允许您将输出重定向到文件。这非常有用,因为您可以稍后查看输出,而无需一直盯着终端窗口。要重定向输出,只需使用以下命令:

tmux -S session_name -L -logfile logfile.txt

该命令将创建名为session_name的tmux会话,并将输出重定向到名为logfile.txt的文件。

比较

这三种工具各有优缺点。nohup是最简单的工具,但它不提供screen和tmux提供的许多高级功能。screen和tmux都提供了许多高级功能,但它们也比nohup更复杂。

工具 优点 缺点
nohup 简单易用 不提供screen和tmux提供的许多高级功能
screen 功能强大,允许创建多个虚拟终端 比nohup更复杂
tmux 功能强大,允许创建多个虚拟终端,并允许您在不同的窗口中分割终端 比nohup和screen更复杂

结论

在本文中,我们探讨了在Linux上使后台程序保持运行的三种方法: nohup、screen和tmux。这些工具都有其各自的优缺点,因此您需要根据自己的需求选择最适合您的工具。