在 systemd ExecStartPre 中使用 find -exec

在 systemd ExecStartPre 中使用 find -exec

我想我想做的事情很明显

# 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"` \\;'

相关内容