linux - crontab 删除路径包含 % 的文件
问题描述
想删除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.*
在执行过程中缺少后缀()。直接运行是没有问题的。
解决方案
你需要反斜杠%
字符,所以:
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 的尾随“”。
推荐阅读
- python - Keras model.predict() 为测试输入中的所有值返回相同的预测输出
- go - 多路复用处理程序未接收到从 curl post 传递的所有查询参数
- arrays - 将全零给定数组转换为目标数组
- javascript - 如何使用 javascript 或 jquery 仅从字符串中获取所有 HTML 标记?
- react-native - 反应原生stacknavigator堆栈方法?
- c# - C# 代码中的内嵌注释会影响编译后的 dll 吗?
- python - 如何使用硒获取选择选项值?
- r - R:在 as.numeric 之后的 Nan。使用 stringr 从字符串中提取数字,但它显示 Nan。dplyr, sparklyr, 管道
- android - Android Sender App 在尝试连接到 Chromecast 时出现 DEFAULT_MEDIA_RECEIVER_APPLICATION_ID 超时
- regex - 正则表达式适用于 regex101 但不适用于 php