Skip to content

守护进程(后台执行)

再也不用担心网断了=>程序自动停了~

1. screen

使用screen命令,可以创建一个守护进程。在创建screen会话后,将会打开一个新的终端窗口,可以在该会话内执行各种命令,即使网络断开或者关闭终端,会话内的进程也会继续运行。

1.1 创建 screen 会话

创建一个名为mySessionName的新的 screen 会话,请执行以下命令:

screen -S <SessionName> 

提示

<SessionName>替换为您的会话名称。

1.2 分离与恢复 screen 会话

要分离会话,您可以先按下 Ctrl+A 后不松手再按D,这样会将当前会话与屏幕分离。

要切换到另一个 screen 会话,请使用screen -r命令,后跟会话ID或名称:

screen -r <SessionID/SessionName>

自动补全

输入name过程中,可以直接按Tab键进行补全(仅限Ubuntu系统且部分终端软件不支持)。

1.3 列出所有 screen 会话

要查看所有已创建的 screen 会话,请执行以下命令:

screen -ls

这将显示一个包含所有会话的列表,包括它们的ID和名称。

1.4 完全关闭 screen 会话

如果您想完全终止会话,请进入Screen会话后使用以下命令:

exit

1.5 无法进入 screen 会话

如果您使用screen -r无法进入会话,screen -ls中显示您要恢复的会话状态为Attached

您可以使用下面的命令进入共享会话模式。

screen -x <SessionID/SessionName>

2. tmux

2.1 创建新的会话

tmux 中创建新的会话非常简单。你可以使用 tmux new-session 命令,通常简写为 tmux newtmux

详细操作步骤

  1. 打开终端。

  2. 输入以下命令之一来创建一个新的 tmux 会话

    tmux new-session
    
    tmux new
    
    tmux
    

    执行这个命令后,你将进入一个新的 tmux 会话。

  3. 你可以指定会话的名称,这样在多个会话中更容易识别。使用 -s 选项后跟会话名称:

    tmux new-session -s my_session
    
    这将创建一个名为 my_session 的新会话。

  4. 如果你想要在会话中直接运行一个特定的命令或程序,你可以使用 -c 选项:
    tmux new-session -s my_session -c '/path/to/directory'
    
    这将在指定目录中创建一个新的会话。
  5. 如果你想要在会话中运行一个特定的命令,可以使用 -d 选项:
    tmux new-session -s my_session -d 'top'
    
    这将创建一个新会话并立即运行 top 命令。

创建会话后,你可以使用 tmux ls 命令来列出所有会话,使用 tmux attachtmux a 来重新连接到会话,或者使用 tmux detach 来从会话中分离。

请记住,tmux 的默认前缀快捷键是 Ctrl + B,你可以按这个组合键来执行 tmux 的各种操作,比如创建窗口、面板等。

一般情况

一般使用下面的命令:

tmux new -s my_session

2.2 分离与重连会话

在终端中使用 tmux 时,如果你想分离(detach)当前的会话,让它在后台运行,你可以按以下步骤操作:

  1. 首先,确保你当前正在一个 tmux 会话中。如果你看到底部有一个绿色的状态栏,这通常意味着你正处于 tmux 会话中。

  2. 然后,你可以按组合键 Ctrl + B,这是 tmux 的前缀快捷键。

  3. 在按下 Ctrl + B 后(一定要松开),再按 D 键。这个操作会将你当前的会话分离,并返回到正常的 shell 提示符。

即:Ctrl + B 然后 D

分离会话后,你可以关闭当前的终端窗口或标签页,而 tmux 会话将继续在服务器上运行。

若想重新连接到这个会话时,可以使用 tmux attachtmux a 命令,后面可以跟上会话的名称或编号(如果你有多个会话的话)。

只有一个会话

重新连接到默认会话

tmux attach
tmux a

有多个会话

# 若有多个会话,可使用以下命令列出所有会话
tmux ls

可以使用会话名称或编号来重新连接到特定的会话

tmux attach -t 会话名称或编号
tmux a -t 会话名称或编号

2.3 重命名会话

tmux rename-session -t 0 <new-name>

2.4 退出

进入会话后输入exitCtrl + D

2.5 杀死会话

tmux kill-session -t 0
tmux kill-session -t <name>