スクリプトは/home/pi/.config/lxsessions/LXDE-pi/autostart
次の行で呼び出されます。
@bash /home/pi/Documents/openContent.sh /media/pi index.html http:/google.com
openContent.shは次のようになります。
#!/bash
# $1 defines path we search
# $2 defines name of file we're searching for
# $3 defines default URL if we can't find the thing we're searching for
path="$(find $1 -name $2 | head -n 1)"
if [ -f "$path" ]; then
echo "content found at $path"
chromium-browser --incognito --kiosk $path
exit
else
echo "content was not found in $1
chromium-browser --incognito --kiosk $3
fi
起動後に端末でスクリプトを実行すると、期待どおりに機能します。同じパラメータを使用して検索すると、USBでWebページが開きます。存在しない名前を検索するためにランダムな名前を指定すると、google.comが開きます(/media/piで見つからないため、すべて問題ありません)。
ただし、再起動して自動実行で実行すると、常にgoogle.comに移動します。この行を変更すると:
@sh /home/pi/Documents/openContent.sh /media/pi index.html http:/google.com
そして:
@chromium-browser --incognito --kiosk /media/pi/DISK_IMG/index.html
これでページが開きます。したがって、USBドライブが遅くロードされる問題ではないようで、両方が機能しないことを願っています。
私はそれがbashスクリプトまたは自動起動で引数を渡すときに私が間違っていると思いますが、何がわかりません。どんなアイデアがありますか?
編集する:
sleep 30
openContent.shの上部に追加しようとしましたが、うまくいきました。そこに遅延をハードコーディングしたくないので、これは少し混乱します。これが検索/USBデバイスに関する既知の問題ですか? GUI/デスクトップ環境の後にロードされる時間がありますか?
これは、基本的にファイルシステムが準備されるまで実際にディレクトリを調べることができないため、意味があります。したがって、明示的なURLを渡すと、私を信頼してそこに移動し、そこから検索を開始すると、ファイルシステムが準備されました。しかし、まず検索するとそこには何もないと出てきます。
ベストアンサー1
そのため、ドライブの実行と自動マウントの間に遅延があるように見え、 /home/pi/.config/lxsessions/LXDE-pi/autostart
最初の1分の間ファイルを見つけてデフォルト値に戻るようにbashスクリプトを修正しました。これは通常最初の数秒以内にトリガされるため、汚れも長すぎません。
特定のURLを呼び出すのはうまくいきますが、起動時にそれを見つける試みが失敗する理由は、Chromeの起動とマウントされたドライブをチェックするファイルシステムの間の遅延がほぼ等しいためであると考えているので、Chromeの起動時にChromeに提供されたURLが有効です。検索操作を実行すると、ファイルシステムがドライブをマウントする前にはるかに高速でnullを返すため、ChromeはデフォルトのURLで開きます。
以下のコードは、最初の操作でデフォルトのファイルを開き、実際のファイルを見つけて、成功した場合はChromeを終了し、正しいURLで再起動して最適化できますが、今はこれがうまくいきます。
#!/bin/bash
# $1 Defines the path that we will look in
# $2 Defines the name of the file we're looking for
# $3 Defines the path to a default file if not found
delayTime=1s
for i in {0..60}
do
path="$(find $1 -name $2 | head -n 1)"
if [ -f "$path" ];then
echo "content found at $path"
chromium-browser --incognito --kiosk $path
exit
else
echo "content was not found on attempt $i"
sleep $delayTime
fi
done
chromium-browser --incognito --kiosk $3
exit