2016-04-26 3 views
-1

からプロセスとして1つのシェルスクリプトを起動します。どのように私は</p> <pre><code>#!/bin/sh # adb shell "sh /sdcard/script2.sh &" </code></pre> <p>script2.shは/ SDカード/フォルダ内のAndroidデバイス上にあるホスト上で実行されて、私は私のscript1.shからこれをやりたい、別のシェルスクリプト

私はscript2.shをAndroid上で実行し続けたいと思います。 script2.shには無限ループがあります。 しかし、上記のコマンドは機能していません。 script2.shは、script1.shが終了するとすぐに停止します。

私も

# adb shell "exec sh /sdcard/script2.sh &" 

を試してみましたが、これも動作しません。

答えて

1

親シェルスクリプトで、子プロセスscript2.shのPIDを抽出します。 を実行し、wait systemコマンドを使用して完了を待ちます。

wait <PID> 

詳細はlinkを参照してください。あなたがnohupを使用することができます

+0

私は待っていません。私は最初のスクリプトを終了したい。 –

0

adbのシェル "/sdcard/script2.sh SH nohupは&"

代わりの幹部。 nohupがしていることは、script1が終了するとすぐに、あなたのscript2をinitプロセス(すべてのプロセスの親)の子として作ることです。

+0

答えをありがとう。 私はAndroidデバイス上で直接 nohupをSH /sdcard/script2.sh -l& それを実行するが、私は私のホストマシンから実行する場合には動作しない場合、私は、nohupをコマンドの機能を使用する場合: adbのシェル「nohupはshを/ "adb root"としてadbセッションを開始しました。したがって、アクセス権の問題はありません。 –

+0

エラーは何ですか? – sriramganesh

+0

エラーは発生していませんが、script2.shはログファイルに保存されていないアンドロイドデバイスのログファイルにログデータを保存することになっています。 アンドロイドデバイス "nohup sh /sdcard/script2.sh -l"で直接コマンドを実行すると、ログファイルにデータが書き込まれます。 –

関連する問題

 関連する問題