为了让之后的人少走弯路
cron 日志按日期划分
先说结果的例子:
1 2 3 4 5 6 7 8
| ONNS_HOME=/Users/onns ONNS_ROOT=/Users/onns/Onns ONNS_CONFIG_DIR=/Users/onns/Onns/code/config/bash ONNS_PLATFORM=macmini cron_log_dir=/Users/onns/Onns/code/log/cron 30 * * * * zsh /Users/onns/Onns/code/bash/oclear >>${cron_log_dir}/out-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log 2>>${cron_log_dir}/err-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log 0 22 * * * zsh /Users/onns/Onns/code/bash/obackup >>${cron_log_dir}/out-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log 2>>${cron_log_dir}/err-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log */10 * * * * /Users/onns/Downloads/github/ddns/ddns >>${cron_log_dir}/out-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log 2>>${cron_log_dir}/err-${ONNS_PLATFORM}-`date "+\%Y\%m"`.log
|
日期很好拿,通过date +%Y%m
就拿到了,但是想要写在文件名里需要注意几点:
-
不能写在变量里,不知道是不是我写的有问题,我试过如下的写法都失败了:
1 2 3
| log_date=$(date +%Y%m) log_date=`date +%Y%m` log_date=`date "+\%Y\%m"`
|
-
%
需要转义(下面这种写法我试过也不行):
1
| * * * * * /Users/onns/Downloads/github/ddns/ddns >>${cron_log_dir}/out-${ONNS_PLATFORM}-`date +%Y%m`.log 2>>${cron_log_dir}/err-${ONNS_PLATFORM}-`date +%Y%m`.log
|
TODO
- 总感觉有通过变量的方式定义时间日期的方法,不然现在这种太呆了。
cron 使用变量
很奇怪,不能定义多级变量,不然会索引不到。
1 2 3 4 5 6 7
| ONNS_HOME=/Users/onns ONNS_ROOT=/Users/onns/Onns
ONNS_HOME=/Users/onns ONNS_ROOT=$ONNS_HOME/Onns
|
tips
cron
是通过sh
来运行脚本的,在一切环境变量之前,如果你在.zshrc
或者.bashrc
中定义了一些自己的东西,那么恭喜你,用不了。