![如何恢复到由 ssh 触发的进程?](https://linux22.com/image/1496004/%E5%A6%82%E4%BD%95%E6%81%A2%E5%A4%8D%E5%88%B0%E7%94%B1%20ssh%20%E8%A7%A6%E5%8F%91%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我正在通过 WiFi 临时使用一些 Raspberry Pi -2 和一台 Ubuntu 笔记本电脑(14.04 LTS)。我有一些python3
脚本,我通常使用ssh -6
(因为我正在使用IPv6 链路本地地址)来触发我的python3脚本。
例如:
ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'python3 myScript.py'
要终止套接字上的脚本,我使用:
ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'fuser -k portNumber/udp'
这将触发 Raspberry Pi 上的脚本,除非我使用CTRL+,否则C我当然会在终端上看到脚本的输出。但我正在进行一些实验,在这些实验中,我通常会退出终端,而 Pis 上的脚本会继续运行(一些套接字程序!)。
我想返回 Pi 上的脚本,可以吗?我的意思是,当我再次ssh -6
访问 pi 的地址时,我实际上可以转到进程仍在运行的终端吗?据我所知,tty
在使用时我无法使用 Pi 的不同 s ssh
。
笔记 :
我真的不确定我是否应该在这里或服务器故障请您指导我!
答案1
您无法使用普通的 ssh 返回到同一个终端(一旦 ssh 断开连接,pty 就会被销毁),事实上不当您在“批处理模式”下运行命令时,终端 – 仅原始标准输出。(-t
但可以强制使用终端。)
tmux
但是,您可以使用终端多路复用器(例如、screen
或)来实现此dtach
目的,它们主要就是为此目的而编写的:
ssh myserver "tmux new-session -d -n myscript ./myScript.py"
ssh -t myserver "tmux attach -n myscript"
ssh myserver "tmux kill-session -t myscript"
使用 dtach:
ssh myserver "dtach -n ~/myscript.sock ./myScript.py"
ssh -t myserver "dtach -a ~/myscript.sock"
带屏幕:
ssh myserver "screen -dmS myscript ./myScript.py"
ssh -t myserver "screen -r myscript"