私はDebianベースのRaspbianを使用しています。私のRaspberry Piは自動的にデスクトップに起動します。私はCで書かれ、g ++を使って実行可能ファイルにコンパイルされた小さなプログラムを持っています。このプログラムを実行するにはネットワーク接続が必要で、一部のデータを端末に出力します。素晴らしいことはありません。
それを使用するには、LXterminalウィンドウを開き、sudo権限でプログラムを手動で実行する必要がありました。
sudo ./Desktop/rpiMainProgram
私の質問は:ネットワーク接続を確立した後にターミナルベースのプログラムを自動的に起動するにはどうすればよいですか?
私は使うダイヤル3Gアダプタを自動的に接続するにはパスします/etc/network/interface
。接続が有効です。 pingとサーフィンができます。
auto ppp0
iface ppp0 inet wvdial
フォローするこのチュートリアル必要に応じて wvdial を設定します。
私方法を参照してくださいbash(?)スクリプトを呼び出すためにpost-up
inメソッドを使用します。/etc/network/interfaces
ただし、この方法では、GUI以外のアプリケーションを実行することはできません。
放棄する前の最後の試みは
auto ppp0
iface ppp0 inet wvdial
post-up LXterminal "sudo ./Desktop/rpiMainProgram"
ベストアンサー1
次の内容をファイルに入れることができます/etc/rc.local
(テストされていません)。
{ while ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done; /home/youruser/Desktop/rpiMainProgram > /home/youruser/Desktop/rpiMainProgram.log 2>&1; }&
ping -c 1 -W 1 8.8.8.8
:pingパケットを送信し、1秒間応答を待ちます。
while
コマンドがステータスコード> 0(つまり失敗)で終了している間、ping
ループは続きます。
ネットワーク接続があり、8.8.8.8
正常にpingできる場合は、ループが停止してプログラムが実行されます(これを呼び出すと効果があるかどうかを確認してくださいpwd
。
これにより、{}
これを単一のコマンドタイプに変換して、を使用して全体をバックグラウンドにプッシュできます&
。それ以外の/etc/rc.local
場合は、ネットワークが発生するまで残りをブロックします。
よりエレガントな解決策があるかもしれませんが、私のPiにも同様の解決策があります。