2016-05-30 34 views
3

我想通过SSH从Android手机远程执行一个Python程序(它运行在我的Raspberry Pi上)。 在Android端我使用JSch库和基本的代码解释这里: http://droid-lernen.de/raspberry-pi-mit-dem-smartphone-steuern-teil-1/使用SSH从Android智能设备执行Python程序

在树莓边我想运行在python一个简单的程序,创建一些地块PDF文件(使用matplotlib库)。

我设法建立连接,但通过Android应用程序启动程序无法正常工作。程序启动,但无法完成。如果我在Raspberry上手动启动程序(“sudo python myprogram.py”),它可以正常工作。

我想有一些特权问题,但我的研究没有给出任何结果。 有什么建议吗?

+0

你是什么意思,它不能完成?它会永远运行,还是退出而没有完成它应该的工作? – saq7

+0

未完成工作就退出。它会创建一个损坏的PDF,如果具有相同名称的PDF不存在,或者它不能覆盖旧的。 – user5868483

+0

在脚本有机会完成之前,您是否结束了ssh连接? – saq7

回答

0

当你进入linux系统的SSH服务器时,它会为SSH创建一个新的进程。您从终端运行的所有进程均作为您所建立的SSH进程的子进程运行。如果SSH进程终止,操作系统会向SSH进程的所有子进程发送一个挂起信号,这将导致这些进程立即退出。

从SSH进程执行脚本时使用nohup。这将导致子进程忽略挂起信号并继续运行

nohup python my_script.py

+0

感谢您的信息。这听起来逻辑上,我试图使用“nohup”命令,但它没有奏效。我们已经定位了这个问题,当我们创建一个空的PDF文件时,它与sudo命令一起工作,但是如果我们试图在它上面绘制一些图,它会中断程序并创建一个损坏的PDF文件。真令人困惑。 – user5868483

0

我想这是因为您发送sudo命令和您的树莓派期待一个密码。

尝试使用像这样的命令:echo <password> | sudo -S python myprogram.py

你也可以问这篇文章的作者。也许他可以给你一个更专注的答案。

相关问题