在Windows中定期启动和停止命令

问题描述 投票:0回答:1

我正在使用this Python程序连接到VPS并创建NAT隧道。

My Home Windows PC <-- My Linux VPS <-- The internet

因此,即使我的PC在NAT之后,也可以访问公开的VPS,它将重新请求重新发送到Python脚本,然后将其重新发送到我的家用PC。

要在家用PC上启动Python脚本,请使用以下简单的批处理文件:

cd "%~dp0"
python.exe natsrv.py --mode client --secret hunter1 --local 127.0.0.1:8080 --admin myvps.ip.here:8999

这将启动永远不会停止的Python脚本:它会无限期地继续下去,直到我关闭批处理窗口。很好。

这里是问题:如果隧道在几分钟内未使用,它将以静默方式停止处理请求。这不会停止Python脚本的执行,该脚本会继续运行...它只是停止工作,而是继续运行。

我可以在Python脚本中解决此问题,但它非常复杂,我不想弄乱它:我想要一个简单得多的解决方案。

批处理文件应每5分钟停止python.exe的执行并重新启动它。。我该怎么办?

[SLEEP和GOTO命令或我尝试过的任何类似命令,将在Python脚本结束之前等待,然后被触发!

我需要告诉批处理脚本(或控制它的任何实体),无论它是否仍在运行,必须每5分钟停止并重新启动python.exe。有可能吗?

python windows batch-file nat
1个回答
0
投票

只需让脚本自行运行。创建一个“父级”-它所做的就是运行子级,等待5分钟,如有必要,将其杀死并再次运行。

import time
import multiprocessing as mp

def the_real_program():
    print("I am doing useful stuff")

def parent():
    while True:
        p = mp.Process(target=the_real_program)
        p.start()
        time.sleep(5*60)
        p.terminate()
        p.join()
© www.soinside.com 2019 - 2024. All rights reserved.