私が見つけたいくつかのガイドに基づいてUbuntuサーバーキオスクを作成し、キオスクを終了する前に停止しようとしています。キオスクはコマンドを介して自動または手動で開始され、sudo start kiosk
実行中に停止することができますsudo stop kiosk
。
ブラウザが閉じると、キオスクコードはブラウザを再び開きます。その結果、サーバーは引き続き新しいブラウザセッションを作成するため、サーバーをシャットダウンできません。
単に実行される辞書終了スクリプトを設定してみましたが、sudo stop kiosk
まだ機能していないようです。
私がしたことは次のとおりです。
- ディレクトリに
stop_kiosk.sh
ファイルが作成されます/etc/init.d
。 - ファイルを次にシンボリックリンクします。
/etc/rc0.d/K00StopKiosk
- ファイルを次にシンボリックリンクします。
/etc/rc6.d/K00StopKiosk
ただし、ブラウザのインスタンスを閉じてすぐに新しいインスタンスを開きます。他のすべてのセッションは閉じられ、サーバーとやり取りできなくなり、ブラウザだけがやり取りできます。コンピュータを手動でシャットダウンする必要があります(ここではvirtualboxを使用しているため、virtualboxを終了します)。
閉じる前に手動で実行すると、sudo stop kiosk
キオスクが正しく停止し、ブラウザが閉じてopenbox、xorgなどが終了します。これにより、問題なく安全で簡単に閉じることができます。
キオスクファイルは次のとおりです。
/opt/kiosk.sh:
#!/bin/bash
xset -dpms
xset s off
openbox-session &
while true; do
rm -rf ~/.{config,cache}/google-chrome/
google-chrome --disable-translate \
--disable infobars \
--disable-suggestions-service \
--disable-save-password-bubble \
--no-first-run 'http://google.com'
done
/etc/init/kiosk.conf:
start on (filesystem and stopped udevtrigger)
stop on runlevel [06]
console output
emits starting-x
respawn
exec sudo -u user startx /etc/X11/Xsession /opt/kiosk.sh --
ベストアンサー1
使用中の/opt/kiosk.sh
セッションファイルstartx
。スクリプトには無限ループがコーディングされているため、スクリプトは終了するたびにブラウザを再度開きます。
これを使用する代わりに、while true
サービスが終了していることを確認してください。残念ながら、私はシステムがシャットダウンしたときにどのテスト条件が決定されるかを知るのに十分なアップスタートについて知りません。このような新しいループwhile
で十分です(これはスクリプトのループを置き換えますkiosk.sh
)。
while [[ $(status kiosk) != */stopping* ]]
ループは、コマンドstatus kiosk
が "/stopping"を含む文字列を返すのを待ってから返されると、ループを終了します。
upstart
より多くの経験を持つ人が私の実装を修正できることを願っています。 :)