crontab 출력을 위해 로그에서 사용할 DATE 변수를 어떻게 설정합니까?


10

나는 같은 날짜의 변형으로 aroudn을 연주했다.

DATE = $(date)

그러나 그것은 작동하지 않았다

크론 탭 -e

CRONLOG=/tmp/log/crontab.log
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
* * * * * echo $DATEVAR >> /tmp/log/crontab.log
*/2 * * * * echo "$DATEVAR hello" >> ${CRONLOG}
*/1 * * * * echo 'every minute' >> ${CRONLOG}

이것은 텍스트를 그대로 출력합니다 ...

각 업데이트에 타임 스탬프가있는 crontab.log에 로그 항목을 만들고 싶습니다.

CentOS 6에서 어떻게해야합니까?

최신 정보

DATEVAR=date +20%y%m%d_%H%M%S
*/1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log

내가 시도했을 때 [CRON] 만 렌더링되고 = /

답변:


28

Cron은 쉘이 아니며 쉘과 같은 방식으로 명령을 구문 분석하지 않습니다. 따라서 변수는 정적 텍스트 인 것처럼 할당됩니다.

이 문제에 대해 내가 아는 세 가지 솔루션이 있습니다.

옵션 1 : 쉘 스크립트를 사용하여 명령을 생성하고 원하는 변수와 논리를 포함한 다음 cron에서 해당 쉘 스크립트를 호출하십시오.

* * * * * /path/to/myscript.sh

myscript.sh :

DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
echo $DATEVAR >> /tmp/crontab.log

옵션 2 : 명령에 날짜 명령을 직접 포함 시키십시오. 전체 명령이 쉘로 전달되므로 날짜가 처리되고 실제 날짜로 대체됩니다.

* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log

옵션 3 : cron에서 문자열 변수를 설정하고 처리 할 명령에 전달하십시오 (참고-퍼센트 기호는 이스케이프 할 필요가 없으며 변수 자체는 $ ()로 감싸 져 별도의 쉘에서 실행됩니다- 백틱은 동일하게 작동해야합니다.

DATEVAR=date +20%y%m%d_%H%M%S
* * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log

(위의 모든 경우에, 물론 '하드 코딩'대신 로그 경로에 변수를 사용할 수 있습니다.)


1
위대한 피드백 +1 주셔서 감사합니다, 난은 crontab에 추가하려고하지만 didnt가 작업을하고 = / 그것은 DATEVAR 렌더링 결코
qodeninja을

방금 RHEL / CentOS6 호환 시스템 에서이 작업을 수행했으며 예상 결과를 제공했습니다 (예 : 날짜와 함께 파일에 새 줄 추가). 위의 3 가지 중 어떤 옵션을 시도했으며 그 결과는 무엇입니까? 구체적으로 말하면 / var / log / cron에 오류가 있습니까? (스크립트 옵션을 사용하는 경우 a) chmod + x를 잊지 말고 b) 먼저 자체적으로 시도하십시오 (예 : cron을 통하지 않음)
cyberx86

1
옵션 3 =], 전에 그것을 시도했지만 렌더링하지 않았습니다. 그러나 이제는 당신이 lil dif를 한 것을 알았습니다. 왜 $ ($ (DATE))를 두 배로 늘렸습니까? 위의 내 업데이트 참조
qodeninja

1
추가 한 업데이트에 오타가 있습니다. $($DATEVAR)그렇지 않습니다 $($(DATEVAR)). 이것을 $()괄호 안에있는 모든 것을 처리하기 위해 새로운 셸을 시작합니다. 이 경우 변수 $ DATEVAR이 문자열로 설정되어 쉘로 전달됩니다. $(DATEVAR)아무것도 아닙니다. 왜냐하면 아무것도 아니기 때문 DATEVAR입니다 (즉, 변수로 식별하기 위해 $가 빠졌습니다). 또한 주변에 역 따옴표를 사용할 수있는 $DATEVAR동일한 결과를 얻을 수
cyberx86

그럴 수 있지. 그것을 업데이트했습니다. 이 나쁜 소년을 시도하자! 하사 아! 그것은 일했다 lol
qodeninja
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.