crontab -e에서 변수를 사용할 수 있습니까?


13

말할 수 있습니까 :

MYPATH=/root/scripts  
MYSCRIPT=doit.sh

0 1 * * * $MYPATH/$MYSCRIPT

안에 crontab -e?

에서 변수를 사용할 수 crontab -e있습니까?

답변:


15

예, 이런 식으로 변수를 정의하고 사용할 수 있습니다. 한계가 있습니다 (예시하지 않았 음). =부호 오른쪽의 문자열 은 문자 그대로 해석되며 선행 공백이 제거되므로 다음과 같은 구문을 사용할 수 없습니다 FOO=$BAR/qux(예 : PATH=$HOME/bin:$PATH유용한 것은 수행하지 않음).

이것은 설명서에 나와 있으며 다음을 실행하여 볼 수 있습니다.

man 5 crontab

( 매뉴얼의 섹션 1 man crontab에있는 crontab 명령 의 설명서 가 표시되어 있으며 섹션 5 의 crontab 파일 형식에 대한 설명서가 필요합니다 .)


7

시도해 보았습니다. 가능합니다. 이 간단한 예제로 알아낼 수 있습니다 crontab.

FOO = qwerty
* * * * * echo $ FOO> ~ / out

그리고 파일 ~/out(매분 업데이트)을 확인하십시오 "qwerty".


2
+1은 OP가 어떻게 유사한 것을 알아낼 수 있는지 보여줍니다.
Arthaey

더 좋은 예는 대상 스크립트 내에서 $ FOO를 사용하는 것입니다.
Acumenus

4

Linux crontab은 리터럴 값을 보유하는 일부 변수 정의를 지원하지만 긴 텍스트를 더 짧은 표현으로 압축하거나 전자 메일 출력을 보내는 위치와 같은 cron 자체에 대한 일부를 제어하는 ​​것 외에는 많이 사용되지 않습니다.

유연성은 cron 항목의 명령 부분이 Vixie cron (일반적으로 Linux 시스템에 설치되는)을 사용하는 시스템에서 /bin/sh -c정의 된 쉘로 전달 되거나 쉘로 전달된다는 것을 이해합니다 SHELL. 이것이 의미하는 것은 명령 행의 나머지는 간단한 쉘 스크립트입니다. 참고 : 사용중인 쉘을 인식하십시오. 리눅스에서 /bin/sh일반적입니다 /bin/bash너무 $( ... )내장 명령이 작동하지만, 이전 시스템에 어디하지 않을 /bin/sh경우에만이 이해 `대신.

예를 들어, 저장된 메시지의 MBX 파일을 매월 보관하고 압축하는 간단한 crontab 줄이 있습니다. 다음과 같이 보입니다 :

15 0 1 * *  nf=MailFeed-$( date +\%Y\%m ).mbx && cd Logs && mv MailFeed.mbx $nf && bzip2 -9 $nf

매월 1 일 오전 12시 15 분에 실행되며 CCYYMM으로 새 파일 이름을 설정하고 현재 파일을 새 이름으로 이동하고 압축합니다. 기억해야 할 것은 이스케이프 처리되지 않은 %(퍼센트 부호)는 개행 문자로 취급되며 그 뒤에 오는 데이터는 퍼센트 부호 앞에 오는 명령으로 stdin으로 전송됩니다. 이것이 법선 date +Y+mdate +\%Y\%m위와 같이 쓰여진 이유 입니다.


-2

cronjob은 cron 항목 만 포함 할 수 없습니다. bash-script를 작성하고 cronjob을 통해 bash-script를 실행하는 옵션이 아닙니까?


1
다른 유니 세에서도 마찬가지이지만 Linux의 cron은 환경 변수 할당을 지원합니다.
Gilles 'SO- 악마 그만해
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.