crontab(Firefox)을 통해 X11 애플리케이션 실행

crontab(Firefox)을 통해 X11 애플리케이션 실행

나는 매분마다 Firefox를 여는 crontab을 작성하고 싶습니다(단순히 테스트하기 위해, 의미가 없다는 것을 압니다). 내 문제는 crontab이 활성화되어 있어도 아무 일도 일어나지 않는다는 것입니다. 내 crontab은 다음과 같습니다.

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

왜 작동하지 않는지 아시나요?

답변1

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

위의 cron 명령만 보면 왜 작동하지 않는지 알 수 있습니다. 이 명령의 사용법 export

export name[=word]...

POSIX 셸에서 뒤에 나오는 나머지 단어는 export DISPLAY=:0.0실행할 명령이 아니라 환경으로 내보내야 하는 추가 셸 변수로 처리됩니다. POSIX(2018년 7호)에서도 다음과 같이 규정하고 있습니다.이름~해야 한다

밑줄, 숫자, 이식 가능한 문자 집합의 문자로만 구성된 단어입니다.

즉, 쉘 변수 이름에는 와 같은 문자가 포함될 수 없으므로 내보낼 변수 이름 목록에 해당 /문자를 포함하려고 하면 또는 와 같은 메시지와 함께 오류가 발생합니다 ./usr/bin/firefoxnot a valid identifierbad variable name


또한 xhost명령이 잘못 사용되고 있습니다. 이를 직접 실행하여 xhost사용자 계정을 허용된 사용자로 추가해야 하는지 확인하세요. 이 작업은 한 번만 실행해야 하며 cron으로 예약하면 안 됩니다.


프로그램이 X 디스플레이 서버에 연결하는 것을 막는 다른 메커니즘이 없는 한, 위의 줄은 다음과 같이 간단히 대체될 수 있습니다.

DISPLAY=:0.0
* * * * * /usr/bin/firefox

매분마다 새로운 Firefox 창이 시작됩니다. SHELL환경 변수도 지정할 필요가 없습니다 . 실행 파일의 전체 경로를 지정했으므로 firefox해당 변수도 설정할 필요가 없습니다 PATH.


또한보십시오:POSIX 사양export

관련 정보