假设我有一个简单的可执行Linux程序,它在循环中无限运行,直到明确停止。我想以这样的方式部署它,即使在我断开Android设备的USB电缆后,它也能继续运行。当我尝试像这样运行程序时,
$adb shell
<android_shell>$ /path/to/dir/myprog &
我可以断开电线,当我重新连接它并执行以下操作时
$ps | grep myprog
我仍然可以看到它在运行。
但是,当我尝试以这种方式运行它时,
$adb shell /path/to/dir/myprog &
一旦我断开连接,进程就会被杀死,我就无法再用ps
找到它。
1)这两种执行命令的方式有什么区别?
2)是否有一种方法可以在桌面终端上运行命令以达到我想要的效果?
$adb shell /path/to/dir/myprog &
时,实际上你是在调用shell,而shell启动进程,所以父进程实际上仍然是shell。正确的答案是Lie Ryan提到的。没有引号,终端会将我的命令视为后台进程,而不是我的命令中的参数,这是我的实际意图。添加引号解决了问题。因此,$adb shell "/path/to/dir/myprog &"
完全解决了我的问题。在这种情况下,不需要使用nohup。 - shaveenk"
,但实际上我忘记提到它了。@LieRyan 我完全同意你的观点。 - Rilwan