제가 찾은 일부 가이드를 기반으로 우분투 서버 키오스크를 만들었고, 키오스크를 종료하기 전에 중지하려고 합니다. 키오스크는 명령을 통해 자동 또는 수동으로 시작되며 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
더 많은 경험을 가진 사람이 내 구현을 수정할 수 있기를 바랍니다 . :)