亚行命令奇怪的行为

时间:2013-11-20 23:33:33

标签: android shell adb

我对亚行有疑问。

我对这个问题的标题感到抱歉,因为我真的不知道如何为此提出好的标题。

我目前正在使用许多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 &'

然后解锁屏幕,脚本运行正常。

这是我长期以来遇到的最奇怪的事情。

我真的希望有人可以帮助你。

1 个答案:

答案 0 :(得分:0)

我想你想要守护一些在后台运行的程序。但通常,当父母离开时,子进程将被杀死。在这种情况下,您的adb shell是父进程。

这种行为在设备之间确实不同。我只是在手机上试了一下,发现“&”没有任何效果,shell命令仍然被阻止。

我认为更好的方法是使用linux的标准daemonize方法。请参阅:

  1. Write a daemonize native program
  2. How to daemonize a script on a generic linux os