我透過 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 screen
、tmux
和vnc
。它們允許您在斷開連接時保持會話打開。
格努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萬個),因此可以為每個用戶分配一個,並且仍然有空閒。