在使用elastic APM时候,现在的apm版本不支持自动删除过期index,需要使用curator手动删除或者添加到定时任务执行。
命令是

/usr/local/bin/curator_cli --host localhost delete_indices --filter_list '[{"filtertype":"pattern","kind":"prefix","value":"apm-6.3.1-"}, {"filtertype":"age","source":"name","timestring":"%Y.%m.%d","unit":"days","unit_count":20,"direction":"older"}]'

命令中有个根据index名中时间戳的判断,"timestring":"%Y.%m.%d",这中间使用了%,而%在cron里是有特殊含义的,需要转义处理,这之前没有遇到过,所以定时任务一直没成功。

以下内容来自网络

Cron daemon,是linux下用来周期性执行命令的守护进程。可以通过crontab命令列出和编辑用户的cron任务。

(1)cron任务的基本形式是:minute hour [day of month] month [day of week] command
cron任务执行时必须满足以下条件:分钟、小时和月份满足给定条件,并且day of month和day of week至少一个满足条件。

(2)在设置时间日期时,可以使用范围或者列表
比如以下命令会在每天0点到4点,8点到12点的1、2、5、9分钟执行command命令

1,2,5,9 0-4,8-12 * * * command

(3)在设置时间日期时,可以使用步长,步长仅对范围或者*有效
比如每5分钟执行command命令,可以

*/5 * * * * command

下面的命令会在第50、51、52、53、55、57、59分钟执行command命令

50,51,52,53-59/2 * * * * command

(4)month或者day of week域,可以使用星期或者月份的前三个字母,大小写都可以,但是此时不能使用范围或者列表。比如

* * * * Mon command

(5)在第6个域,也就是命令部分,%具有特殊含义,%之前的部分会被SHELL执行,%之后的部分将会作为前面部分的标准输入。如果确实需要使用%,请用\进行转义或者使用单引号(即\%或者'%',双引号"%"是无效的)。

(6)每隔一周执行一个任务,这样的任务cron是不支持的。但是我们可以通过一个trick实现,其它的每N天(周,年)也可以用类似的方式实现
每偶数周执行(注意%之前的),

* * * * * expr `date +\%W` \% 2 >/dev/null || command

每奇数周执行(最后的true命令,是为了避免cron在偶数周的时候提示非0返回码),

* * * * * expr `date +\%W` \% 2 >/dev/null && command  || true

(7)每90分钟执行命令,一个cron任务是不够的

0 0,3,6,9,12,15,18,21 * * * <commands>

30 1,4,7,10,13,16,19,22 * * * <commands>

(8)不同的Unix系统提供的cron功能略有差别,如果你使用的不是Linux,请man 5 crontab