我想我想做的事情很明显
# Rename Log File
ExecStartPre=/bin/find /data/db/log/*.log -type f -exec mv {} {}.`date +"%Y%m%d-%H%M"` \;
# gzip past log files (is post becuase might take a long time)
ExecStartPost=/bin/find /data/db/log/*.log.2* -type f -mtime +2 -exec gzip {} \;
# delete really old stuff
ExecStartPost=/bin/find /data/db/log/*.log.2*.gz -type f -mtime +90 -delete
这些得到“可执行路径包含特殊字符,忽略”
有什么建议我需要做什么才能使它们正常工作?
答案1
systemd 不会扩展像 , 这样的 glob 模式*.log
,而是将多个%
前缀解释为说明符。它还会解析\
某些字符。因此,您需要在 shell 中运行 find 命令,并使用%
,%%
和退出\
。
ExecStartPre=/bin/bash -c '/bin/find /data/db/log/*.log -type f -exec mv {} {}.`date +"%%Y%%m%%d-%%H%%M"` \\;'