다른 시간대에서 실행되도록 cronjob을 설정하려고 합니다. 나는 많은 것을 봤고 편집이 /etc/default/cron
갈 길이라는 것을 알았습니다. 하지만 이 파일은 더 이상 사용되지 않으며 다음 메시지를 확인하여 TZ=IST
파일에 추가했습니다 /etc/init/cron.conf
. 이것이 작동할지 잘 모르겠습니다. 앞으로 나아갈 방법에 대한 제안이 있습니까?
# This file has been deprecated. Please add custom options for cron to
# /etc/init/cron.conf and/or /etc/init/cron.override directly. See
# the init(5) man page for more information
Ubuntu Linux에서 cron 3.0pl1-120ubuntu4를 사용하고 있습니다.
답변1
크론이 다른 TZ에 있습니다.
CRON_TZ
대신 변수를 설정해 볼 수도 있습니다 TZ
. 이러한 옵션은 배포판별로 다릅니다. 다음 Fedora 및 Ubuntu 매뉴얼 페이지를 살펴보고 man 5 crontab
검색했습니다.TZ
Fedora에는 이 기능이 CRON_TZ=IST
있으며 우분투에서는 다음과 같이 선언합니다.
cron 데몬은 정의된 시간대로 실행됩니다. 현재는 사용자별 시간대를 지원하지 않습니다. 모든 작업: 시스템 및 사용자 작업은 구성된 시간대에 따라 실행됩니다. 사용자가 crontab에서 TZ 환경 변수를 지정하더라도 이는 crontab 작업 자체의 실행이 아니라 crontab에서 실행되는 명령에만 영향을 미칩니다.
Fedora 매뉴얼 페이지에서는 다음과 같이 설명합니다.
CRON_TZ 변수는 cron 테이블별 시간대를 지정합니다. 사용자는 지정된 시간대를 기준으로 테이블에 시간을 입력해야 합니다. 로그 파일에 쓰는 데 사용되는 시간은 데몬이 실행 중인 현지 시간대를 기준으로 합니다.
Ubuntu를 사용하고 있다는 점을 고려하면 이것이 작동할 것이라고 기대하지는 않지만 그럴 수도 있습니다. 우분투 12.10을 확인했습니다.
다음과 같이 시도해 보세요.
#m h d m wday command
CRON_TZ=IST
5 0,6,12,18 * * * /path/to/script.bash
모든 크론은 서로 다른 TZ에 있습니다.
그러나 목표가 서로 다른 시간대에서 모든 cron을 실행하는 것이라면 보다 극적인 전략을 채택하고 TZ
cron 데몬 자체를 변경할 수 있습니다. 중지/시작 스크립트에는 다음과 같은 내용이 있습니다.
# /etc/init.d/crond
...
...
# Source function library.
. /etc/rc.d/init.d/functions
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
export TZ=IST
start() {
if [ $UID -ne 0 ] ; then
echo "User has insufficient privilege."
exit 4
fi
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon $prog $CRONDARGS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
}
...
...
이것은 Fedora crond 중지/시작 스크립트의 코드이지만 Ubuntu의 crond 중지/시작 스크립트에도 유사한 변경이 이루어질 수 있습니다.
답변2
괜찮습니다. 하지만 문자열 "IST"를 따옴표로 묶어보세요.
또는 :cron.conf
/etc/default/cron
export TZ='IST'
또한 짧은 이름을 사용하는 대신 긴 이름을 사용해 보세요.
export TZ='Asia/Kolkata'
~/.profile
또는 crontab을 수행하는 경우 이것을
export TZ='Asia/Kolkata'
이 데몬의 구성 파일을 변경한 후에는 다시 시작해야 합니다.
service cron restart