tes*_*ter 8 cron ubuntu timezone
我正在尝试设置在不同时区运行的 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
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu Linux 上使用 cron 3.0pl1-120ubuntu4。
您可以尝试设置变量CRON_TZ而不是TZ. 这些选项似乎是特定于发行版的。我查看了以下Fedora 和 Ubuntu 的手册页(man 5 crontab然后搜索)。TZ
Fedora 有它,CRON_TZ=IST而 Ubuntu 是这样声明的:
cron 守护进程以定义的时区运行。目前它不支持每用户时区。所有任务:系统和用户的任务将根据配置的时区运行。即使用户在其 crontab 中指定了 TZ 环境变量,这也只会影响 crontab 中执行的命令,而不影响 crontab 任务本身的执行。
Fedora 的手册页是这样描述的:
CRON_TZ 变量指定 cron 表特定的时区。用户应根据指定的时区在表中输入时间。用于写入日志文件的时间取自守护程序运行的本地时区。
鉴于你使用的是 Ubuntu,我不希望这能起作用,但它可能会起作用。我检查了 Ubuntu 12.10。
尝试这样的事情:
#m h d m wday command
CRON_TZ=IST
5 0,6,12,18 * * * /path/to/script.bash
Run Code Online (Sandbox Code Playgroud)
然而,如果您的目标是在不同的时区运行所有 cron,您可以采取更戏剧性的策略,更改TZcron 守护进程本身。停止/启动脚本中类似这样的内容:
# /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
}
...
...
Run Code Online (Sandbox Code Playgroud)
这是来自我的 Fedora crond 停止/启动脚本的代码,但可以对 Ubuntu 的 crond 停止/启动脚本进行类似的更改。