关闭终端是否会停止远程脚本的执行?

关闭终端是否会停止远程脚本的执行?

我有 NAS(运行 Linux)和 Macbook。如果我启动 OSX 终端应用程序,通过 telnet 连接到我的 NAS 并在那里执行一些脚本,结果会怎样?

python myscript.py > log.txt

当我关闭终端窗口时,它会继续运行吗?我应该如何运行脚本才能在终端关闭后继续执行?在这种情况下如何查看脚本执行进度(如果不将其输出重定向到某个文件)?

答案1

  • “当我关闭终端窗口时它会继续运行吗?“:,但发生这种情况是因为你以特定方式启动了 myscript.py;

  • “我应该如何运行脚本才能在终端关闭后继续执行”:你可以在命令前加上 NOHUP,这样就可以明确地告诉你的程序忽略高血压它将接收的信号(如果控制终端关闭)。另外,如果你的程序处于不可中断的睡眠状态,那么它就会继续……睡觉(拒绝任何杀戮尝试),不顾一切;

  • “在这种情况下如何查看脚本执行进度(如果不将其输出重定向到某个文件)?”:可以使用常规“ps”、“top”等命令检查执行本身;执行进度主要可以通过特定于应用程序的跟踪消息(例如,将跟踪/日志消息写入 SYSLOG)进行监控。

说了这么多,我恳请你检查一下ServerFault 问题,处理远程 SSH 连接:我确信当您通过 telnet 进行远程连接时事情完全相同,因为伪/控制终端问题(决定 shell 子进程寿命的主要因素)在 SSH 和 TELNET 远程连接中都是相同的。

答案2

它不会继续运行。

你需要使用类似屏幕在可以重新连接的虚拟终端中运行它,或者将其作为计划任务可以在后台运行。

相关内容