終了する前にコマンドを実行すると動作しないようです。

終了する前にコマンドを実行すると動作しないようです。

私が見つけたいくつかのガイドに基づいてUbuntuサーバーキオスクを作成し、キオスクを終了する前に停止しようとしています。キオスクはコマンドを介して自動または手動で開始され、sudo start kiosk実行中に停止することができますsudo stop kiosk

ブラウザが閉じると、キオスクコードはブラウザを再び開きます。その結果、サーバーは引き続き新しいブラウザセッションを作成するため、サーバーをシャットダウンできません。

単に実行される辞書終了スクリプトを設定してみましたが、sudo stop kioskまだ機能していないようです。

私がしたことは次のとおりです。

  1. ディレクトリにstop_kiosk.shファイルが作成されます/etc/init.d
  2. ファイルを次にシンボリックリンクします。/etc/rc0.d/K00StopKiosk
  3. ファイルを次にシンボリックリンクします。/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より多くの経験を持つ人が私の実装を修正できることを願っています。 :)

おすすめ記事