如何让Plink启动树莓派后台Python脚本后自动终止连接?
解决方法
方法1:让远程脚本在后台运行(推荐)
修改plink命令,将Python脚本放到后台执行,同时重定向输出避免终端占用:
plink.exe -ssh pi@192.168.0.201 -pw ****** "sudo nohup python /home/pi/ftp/files/button.py > /dev/null 2>&1 &"
各部分作用:
nohup:让进程脱离当前SSH会话,即使plink断开,脚本仍能继续运行> /dev/null:丢弃脚本的标准输出信息2>&1:将错误输出重定向到与标准输出相同的位置,避免残留输出导致plink挂起&:将命令放到后台执行,plink会立即返回,不会等待脚本结束
方法2:使用plink的超时参数
plink提供-timeout参数设置连接超时(单位为毫秒),如果命令执行后超过指定时间无返回,plink会强制断开连接。注意该参数控制连接阶段和命令执行阶段的超时,若脚本已启动,超时后plink断开但脚本可能继续运行(建议配合nohup使用):
plink.exe -ssh pi@192.168.0.201 -pw ****** -timeout 5000 "sudo python /home/pi/ftp/files/button.py"
这里-timeout 5000表示超时时间为5秒。
额外提示
如果需要后续终止脚本,可执行如下plink命令通过pkill杀死对应进程:
plink.exe -ssh pi@192.168.0.201 -pw ****** "sudo pkill -f button.py"
内容的提问来源于stack exchange,提问作者salawinder
相关产品推荐
相关产品推荐

