两个相关问题:
如果我通过 ssh 进入远程服务器并在前台启动一个长时间运行的任务(
:~$ ./my-task > out.log
),当我与服务器的连接结束时,该进程是否会继续运行?问题 1 中的相同长时间运行任务大约需要 5 分钟才能运行。如果我打开另一个终端窗口并处理要发送输出的文件 ( ),这会影响完成
tail -f out.log | grep 'Loop count'
所需的时间吗?my-task
答案1
当你断开与服务器的连接时,任务将结束。我用它来做Tmux
这种事情。
您可以按照正常方式安装它。
sudo apt-get install tmux
这个想法是,您ssh
进入服务器,然后使用 shell 启动tmux
并连接到 tmux 虚拟控制台。从虚拟控制台内部启动您的程序tmux
,然后断开与服务器的连接。
虚拟控制台tmux
将继续运行,控制台内的所有内容也将保持运行。您可以连接到服务器并tmux
随意连接/断开控制台。
Tmux 有一个还不错的手册页,但这里有一些关键点可以帮助你入门。
tmux ls
列出正在运行的 tmux 会话。
tmux attach -t 0
附加到 0。
ctrl-B c
创建一个终端。
crtl-B d
分离一个终端。
ctrl-B "
垂直分割端子。
ctrl-B %
水平分割端子。
arrows
导航窗格。
0-9
选择窗口。
s
切换会话。
希望这对初学者有帮助。