【问题标题】:crontab remove file which's path contain %crontab 删除路径包含 % 的文件
【发布时间】:2020-07-22 01:08:41
【问题描述】:

想删除indexInitializer.log 文件。所以用这个定义crontab:0 3 * * * rm -rf /alidata1/setupTms3/jboss-eap-6.4/%LOG_DIRECTORY%/tire2e/indexInitializer.log.*

但在实际操作中,/alidata1/setupTms3/jboss-eap-6.4/文件夹中的所有文件都被删除了。

检查 cron 日志发现:Jul 21 17:00:01 tmsprod4 CROND[26461]: (root) CMD (rm -rf /alidata1/setupTms3/jboss-eap-6.4/),为什么在执行过程中缺少后缀(%LOG_DIRECTORY%/tire2e/indexInitializer.log.*)。直接运行没有问题。

【问题讨论】:

    标签: linux shell cron


    【解决方案1】:

    你需要反斜杠 % 字符,所以:

    0 3 * * * /bin/rm -rf /alidata1/setupTms3/jboss-eap-6.4/\%LOG_DIRECTORY\%/tire2e/indexInitializer.log
    

    来自man 5 crontab

    “第六”字段(该行的其余部分)指定要执行的命令 跑。该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或 crontab 文件的 SHELL 变量中指定的 shell 执行。 命令中的百分号 (%),除非用反斜杠 () 转义,否则将更改为换行符,第一个 % 之后的所有数据将作为标准输入发送到命令。无法将单个命令行拆分为多行,例如 shell 的尾随“”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2021-07-11
      • 2012-08-04
      • 2011-11-24
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多