나는 매분마다 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/firefox
not a valid identifier
bad variable name
또한 xhost
명령이 잘못 사용되었습니다. 자체적으로 실행하여 xhost
사용자 계정을 허용된 사용자로 추가해야 하는지 확인하세요. 이 작업은 한 번만 실행해야 하며 cron으로 예약하면 안 됩니다.
프로그램이 X 디스플레이 서버에 연결하는 것을 방지하는 다른 메커니즘이 없는 한, 위의 줄은 다음과 같이 간단히 대체될 수 있습니다.
DISPLAY=:0.0
* * * * * /usr/bin/firefox
매분마다 새로운 Firefox 창이 시작됩니다. 또한 환경 변수를 지정할 필요가 없습니다 SHELL
. 실행 파일의 전체 경로를 지정하므로 변수도 firefox
설정할 필요가 없습니다 PATH
.
또한보십시오:POSIX 사양export