后台工作

后台工作

我通过 ssh 连接到服务器,并且想要运行一个需要很长时间的进程。我通过在笔记本电脑终端中使用 ssh 连接到服务器,但我希望能够关闭笔记本电脑,但仍然可以在服务器上运行进度。由于它们是两台独立的计算机,看来我应该能够做到这一点,但我不确定是否可以通过 ssh 来做到这一点。

答案1

这很简单,&例如在命令后面添加一个

bash script.sh &

即使您退出会话或关闭终端,它也会继续执行。
另一种方法是使用nohup命令并执行你的命令。例如

nohup bash script.sh

查找更多使用man nohup并关注具有相似方向的问题。

答案2

后台工作

在后台运行

program &

在后台运行并在断开连接后继续。还重定向stdout~/nohup.out.

nohup program &

相同但重定向到另一个文件

nohup program > "another file" &

注意上述命令,您可以使用该jobs命令查看后台作业。

相同,但从职位列表中删除

nohup program > "another file" & disown

持续会话

请参阅 gnu screentmuxvnc。它们允许您在断开连接时保持会话打开。

格努screen

#create a screen session (do this once)
screen -d -m

#attach to the session
screen -x

您还可以拥有多个(命名会话)

#create a screen session (do this once)
screen -d -m -S a_name

#attach to the session
screen -x -S a_name

请注意,在内部时,ctrl_a 用于控制屏幕。 ctrl_a ctrl_a 将 ctrl_a 传递给 shell。

虚拟网络控制器

#create a vnc session (do this once)
vncserver -from 127.1.0.1 -geometry 1920x1000 :10

#attach to the session (from a remote machine)
ssvnc Vnc+ssh://«user»@«machine-name»:10

更改几何形状以修复您的显示器,也许可以更改显示器编号。

笔记:

本地计算机上的任何人都可以连接到 VNC 会话。

如果您有足够的安全性,您可以添加-SecurityTypes None以关闭 VNC 安全性ssh

127.1.0.1处于环回范围内。只有本地计算机上的进程才能连接。您可以通过ssh(ssvnc)远程连接。您可以使用nftables来限制哪些用户可以连接到127.1.0.1。环回127.0.0.1范围内有很多地址127.255.255.254(大约1600万个),因此可以为每个用户分配一个,并且仍然有空闲。

相关内容