我最近将 elasticsearch-curator 从 3.4.1 升级到 4.1.0。我还创建了一个新的配置文件和执行与 3.4.1 相同的操作所需的操作文件。发生的情况是,当 cron 运行脚本时,它显示为 3.4.1。如果我 sudo 手动运行脚本,它会显示为 4.1.0
我已经删除了 apt 包并迁移到了 pip 包。这是我能想到的唯一可能导致这种情况的事情。
这是脚本,它将从 cron.daily 运行(暂时移至 cron.hourly 进行测试,已不负责任地设置为每分钟运行一次):
#!/bin/sh
/usr/local/bin/curator --version
/usr/local/bin/curator --config /etc/curator/curator.yml /etc/curator/actions/01-nightly-close
/usr/local/bin/curator --config /etc/curator/curator.yml /etc/curator/actions/02-nightly-optimize
我可以将脚本作为 sudo 运行,并且版本号显示为 4.1.0:
/etc/cron.hourly/curator
curator, version 4.1.0
如果我让 cron 运行作业,它会显示版本 3.4.1:
/etc/cron.hourly/curator
curator, version 3.4.1
Error: no such option: --config
Error: no such option: --config
run-parts: /etc/cron.hourly/curator exited with return code 2
另外,当我运行时which curator
,它指向/usr/local/bin/curator
编辑:要回答 untergeek 的问题,以下是/usr/local/bin/curator
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from curator.curator import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())