터미널을 통해 패드를 통해 crontab을 추가하는 방법에 대한 많은 답변을 살펴본 결과 어디에서나 단 하나의 옵션만 발견했습니다.
{crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -
실행 중이고 내가 받는 것은
>
그게 다야. 일부 콘텐츠를 입력하라는 메시지가 표시됩니다.
두 번째 옵션은
(crontab -l; echo "1 * * * * /usr/bin/firefox" ) | crontab -
이것은 cron을 추가하는 것처럼 보이지만 매분 /var/spool/cron/crontabs/root
열리지 않고 firefox
실제로 전혀 열리지 않습니다.
/var/spool/cron/crontabs/root
대부분의 답변에서 가장 많이 읽은 내용은 직접 편집 하거나 제출 하면 안된다는 것입니다 /etc/crontab
.
이것이 내 시스템이 지원하지 않는 것입니까?
의 출력은 uname -a
내 시스템에 대한 다음 설명을 제공합니다.
Linux earth 4.9.0-kali4-amd64 #1 SMP Debian 4.9.30-2kali1 (2017-06-22) x86_64 GNU/Linux
/var/spool/mail/mail
편집: 다음 메시지 로그는 내 로그에서 자주 반복됩니다.
From [email protected] Sun Jul 09 16:01:12 2017 Return-path: < [email protected] > Envelope-to: [email protected] Delivery-date: Sun, 09 Jul 2017 16:01:12 +0530 Received: from root by earth with local (Exim 4.89) (envelope-from <[email protected]>) id 1dU9UY-0001Ry-3A for [email protected]; Sun, 09 Jul 2017 16:01:06 +0530 From: [email protected] (Cron Daemon) To: [email protected] Subject: Cron <root@earth> /usr/bin/firefox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Cron-Env: < SHELL=/bin/sh > X-Cron-Env: < HOME=/root > X-Cron-Env: < PATH=/usr/bin:/bin > X-Cron-Env: < LOGNAME=root > Message-Id: < E1dU9UY-0001Ry-3A@earth > Date: Sun, 09 Jul 2017 16:01:06 +0530 Error: GDK_BACKEND does not match available displays
답변1
두 번째 시도는 정확할 가능성이 높지만 예상은 틀렸습니다.
부분별로 살펴보겠습니다.
crontab -l
현재 사용자의 crontab에 있는 모든 기존 항목을 나열합니다. 이것
echo "1 * * * * /usr/bin/firefox"
라인을 다시 인쇄하면 됩니다. 그런 다음 두 명령이 하위 쉘에 결합되고 공통 출력이 다음으로 파이프됩니다.
crontab -
따라서 표준 입력을 통해 전달된 내용(이 경우 이전 crontab과 새 항목)이 crontab을 덮어씁니다.
말씀하신 대로 crontab 파일에 추가됩니다. 그리고 cron 데몬이 실행 중이라고 가정하면 명령은 1분마다 실행됩니다.
그렇다면 매분마다 Firefox 창을 보지 않겠습니까? - conrjob은 cron 데몬 아래의 다른 쉘에서 실행되기 때문에 X 세션에 액세스할 수 없으므로 Firefox는 실패하고 다음과 같은 내용을 보고합니다.
(firefox:22376): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Error: GDK_BACKEND does not match available displays
그리고 종료합니다. 이 오류를 어떻게 볼 수 있나요? 일반적으로 cron 데몬은 이메일을 보내려고 시도하고 /var/spool/mail
결국에는 이를 확인합니다.
두 가지 형태에 관해서 :
{ crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -
다음과 같이 작성해야 합니다.
{ crontab -l; echo "1 * * * * /usr/bin/firefox"; } | crontab -
(추가 세미콜론에 유의하세요)
()
과의 차이점은 {}
전자는 하위 쉘을 생성하는 반면 후자는 동일한 쉘 컨텍스트에서 명령을 실행한다는 것입니다. 따라서 변수 할당은 한 가지 형식으로만 존재하고 다른 형식으로는 존재하지 않습니다.
답변2
cron 작업에서 시작 하려고 하면 firefox-esr
동일한 오류가 발생합니다 .
DISPLAY
그러나 cron 파일을 올바르게 설정하면 도움이 됩니다.:
* * * * * pi export DISPLAY=:0 && /usr/bin/firefox-esr &
DISPLAY
( 수학을 통해 실제 숫자를 알아 내세요 echo $DISPLAY
.)