我对亚行有疑问。
我对这个问题的标题感到抱歉,因为我真的不知道如何为此提出好的标题。
我目前正在使用许多Android设备,我注意到在某些设备上会出现以下问题。
假设我想运行位于手机的/ data / local / tmp /文件夹中的shell脚本(my_script.sh)。
如果我这样做:
adb shell 'sh /data/local/tmp/my_script.sh &'
手机上没有任何反应。
如果我只是进入adb shell(通过在终端上输入adb shell)并且当我收到此提示时:
shell@android:/ $
然后输入以下内容:
sh /data/local/tmp/my_script.sh &
一切正常。
这只发生在我拥有的一些设备上。所以我无法弄清楚我到底做错了什么。
这是另一条可能对某人有帮助的信息。如果我不使用"&"最后(这意味着我不会在后台进程中运行脚本),一切都可以。
以下代码给出了正确的行为:
adb shell 'sh /data/local/tmp/my_script.sh'
我完全迷失了,我希望有人可以帮助我。
提前致谢!
更新:所以这个问题困扰了我一段时间,我花了不少时间调查这个问题。我注意到了另一种行为,比如我锁定屏幕(按电源键),然后发出命令:
adb shell 'sh /data/local/tmp/my_script.sh &'
然后解锁屏幕,脚本运行正常。
这是我长期以来遇到的最奇怪的事情。
我真的希望有人可以帮助你。
答案 0 :(得分:0)
我想你想要守护一些在后台运行的程序。但通常,当父母离开时,子进程将被杀死。在这种情况下,您的adb shell是父进程。
这种行为在设备之间确实不同。我只是在手机上试了一下,发现“&”没有任何效果,shell命令仍然被阻止。
我认为更好的方法是使用linux的标准daemonize方法。请参阅: