![关闭终端是否会停止远程脚本的执行?](https://linux22.com/image/1436178/%E5%85%B3%E9%97%AD%E7%BB%88%E7%AB%AF%E6%98%AF%E5%90%A6%E4%BC%9A%E5%81%9C%E6%AD%A2%E8%BF%9C%E7%A8%8B%E8%84%9A%E6%9C%AC%E7%9A%84%E6%89%A7%E8%A1%8C%EF%BC%9F.png)
我有 NAS(运行 Linux)和 Macbook。如果我启动 OSX 终端应用程序,通过 telnet 连接到我的 NAS 并在那里执行一些脚本,结果会怎样?
python myscript.py > log.txt
当我关闭终端窗口时,它会继续运行吗?我应该如何运行脚本才能在终端关闭后继续执行?在这种情况下如何查看脚本执行进度(如果不将其输出重定向到某个文件)?
答案1
“当我关闭终端窗口时它会继续运行吗?“:不,但发生这种情况是因为你以特定方式启动了 myscript.py;
“我应该如何运行脚本才能在终端关闭后继续执行”:你可以在命令前加上 NOHUP,这样就可以明确地告诉你的程序忽略高血压它将接收的信号(如果控制终端关闭)。另外,如果你的程序处于不可中断的睡眠状态,那么它就会继续……睡觉(拒绝任何杀戮尝试),不顾一切;
“在这种情况下如何查看脚本执行进度(如果不将其输出重定向到某个文件)?”:可以使用常规“ps”、“top”等命令检查执行本身;执行进度主要可以通过特定于应用程序的跟踪消息(例如,将跟踪/日志消息写入 SYSLOG)进行监控。
说了这么多,我恳请你检查一下这ServerFault 问题,处理远程 SSH 连接:我确信当您通过 telnet 进行远程连接时事情完全相同,因为伪/控制终端问题(决定 shell 子进程寿命的主要因素)在 SSH 和 TELNET 远程连接中都是相同的。