英语轻松读发新版了,欢迎下载、更新

telnet到一个windows机器上,当telnet退出怎么让程序继续运行?

这日子过的 发布于 2015年11月30日
无人欣赏。

好不容易调通了通过expect自动登录,也把程序起起来了,尼玛发现telnet一退出程序又关了!

是从一个linux server telnet到一个win xp的机器上,把一个程序起起来.怎样才能让这个程序不关呢,telnet退出后?

共8条回复
matthew_z 回复于 2015年11月30日

有个软件叫 screen 一般是Linux 发行版就预装的

比如我想运行python notebook 输入 screen -S "notebook"就会进入一个新的命令行界面 在里面运行 ipython notebook 后 按键盘 Ctrl-A Ctrl-D 就可以退回原来的命令行界面, 但是 notebook 仍然会继续运行.

输入 screen -r notebook 就又可以重新回到刚才的界面. 你只要不手动把 screen 关了, screen 里的进程就一直会运行, 哪怕关了 ssh 或者 telnet

具体使用请 google 一下

elgs 回复于 2015年11月30日

两个办法,一个是screen,另一个是nohup。

ctrl + ac 创建一个新窗口; ctrl + ad 退出; ctrl + aa 两个窗口切换; screen -dr 进入上次退出的screen

你的命令如果在screen运行,你退出你的ssh或者telnet终端是不会导致你的程序退出的。

另外一个办法 nohup。nohup myprogram > foo.out 2> foo.err < /dev/null &。

本质上讲,要导致你的程序不退出,你需要把你的程序的三个流(stdin, stdout和stderr)和你的终端脱离关系。默认情况下,三个流都绑定在你登录的那个中断上,所以你的终端一退出,你的程序也退出了。screen是把你的程序的三个流绑定在screen上,所以screen接管了这个程序的三个流。nohup是让文件系统,或者是 /dev/null这个黑洞来接管你的程序的三个流。所以,这两种办法本质上都是妥善管理好你的程序的三个流,你的程序就不会退出了。

Achmed 回复于 2015年12月02日

用start 命令调用。

start xxx.exe

这日子过的 回复于 2015年12月03日

谢谢楼上三位~ 不知道是不是连接到的机器是windows的缘故,试过了nohup &,不行 start也不行 session没有试,最后用的schtasks,这个命令可能是另外起一个独立的进程,所以不受影响。

Achmed 回复于 2015年12月04日

4楼 @这日子过的 windows cmd 弱得一B。没有nohup & 这些

Achmed 回复于 2015年12月04日

4楼 @这日子过的 at 和schtasks 都是任务计划的命令行。默认应该是使用system用户执行的你程序。

这日子过的 回复于 2015年12月04日

5楼 @Achmed 但是telnet上去之后nohup &是可以执行成功的,机器上可能装了可以在windows上跑的一些shell命令,但不会生效。原来是用system执行的,怪不得妥妥的起起来了呢。谢谢指点哈。

Achmed 回复于 2015年12月05日

7楼 @这日子过的

学windows 命令和批处理方面的东西可以去bathome.net玩玩。

登录 或者 注册