시작 시 Cron을 통해 자체 스크립트(openMonitor.sh)를 실행하려고 합니다. 이 스크립트는 Firefox에서 로컬 HTML 파일을 열고 F11을 시뮬레이션하여 전체 화면으로 전환합니다.
#!/bin/bash
sleep 10;
export DISPLAY=:0.0 &&
export XAUTHORITY=/home/pi/.xauthority &&
now=$(date +"%T")
echo "script run at "+$now >> /home/pi/monitor/run.log
/usr/bin/firefox --url /home/pi/monitor/monitor.html &
sleep 10;
xdotool key F11
스크립트는 내 RaspberryPi2 Raspbian Jessie의 crontab에 나열되어 있습니다.
@reboot /home/pi/monitor/./openMonitor.sh
성공적으로 트리거되면 html 파일이 열리지만 Firefox가 전체 화면으로 전환되지 않습니다. 로그인한 사용자로 스크립트를 실행하는 경우에만 작동합니다.
crontab에는 "최소" 환경이 있고 DISPLAY 또는 XAUTHORITY 환경이 설정되어 있지 않아(따라서 X 서버에 액세스할 수 없기 때문에) 연결된 모니터에서 xdotool을 실행하는 데 문제가 있을 수 있습니다. 이 문제를 어떻게 해결하나요?
답변1
문제는 DISPLAY
환경이 아직 설정되지 않았다는 것이 아니라 디스플레이가 아직 존재하지 않을 수 있다는 것입니다. 설사 존재한다고 해도(크론 작업과 GUI 실행 사이에 경쟁 조건이 있음) 디스플레이가 존재하지 않을 수도 있습니다. 사용할 수 있는 권한이 있습니다. 먼저 GUI에 로그인해야 합니다.
@reboot
crontab의 항목은 로그인 세션과 독립적으로 수행되는 작업을 위한 것입니다. 콘솔에 일부 콘텐츠를 표시하려면 로그인 세션이 필요합니다.
대신 pi
사용자에 대한 자동 로그인을 활성화하십시오. 다음부터 시작할 수 있습니다 raspi-config
(참조https://raspberrypi.stackexchange.com/questions/47823/how-to-prevent-autologin-of-gui). 그런 다음 스크립트(Firefox 시작 및 창 최대화)를 사용자의로그인스크립트. LXDE 인터페이스를 사용하는 경우 자동 시작 목록에 항목을 추가할 수 있습니다.시작 시 스크립트 실행(이 페이지의 많은 답변은 GUI 프로그램에 적용되지 않습니다.)